我有以下動作寫入到的WebAPI控制器:爲什麼JsonResult返回改變的Json(用「而不是」)?
public JsonResult GetData()
{
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var item = new Item();
item.GenerateData();
var jsonMediaTypeFormatter = new JsonMediaTypeFormatter
{
UseDataContractJsonSerializer = true
};
var jsonSerializer = new JsonSerializer();
var serializedData = jsonSerializer.Serialize(jsonMediaTypeFormatter, item);
var jsonResult = new JsonResult
{
ContentType = "application/json",
Data = serializedData,
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
};
return jsonResult;
}
線: VAR serializedData = jsonSerializer.Serialize(jsonMediaTypeFormatter,項目);
串行化數據爲JSON因此我有:
{"Class":{"Valid":{"From":"\/Date(1363302000000+0100)\/","To":"\/Date(43017433200000+0100)\/"},"Code":3,"Id":3,"Name":"Class3"},
等..(不是一個完整的JSON)
而是由JsonResult返回的JSON是不同:
{"ContentEncoding":null,"ContentType":"application\/json","Data":"{\"Class\":{\"Valid\":{\"From\":\"\\\/Date(1363302000000+0100)\\\/\",\"To\":\"\\\/Date(43017433200000+0100)\\\/\"},\"Code\":3,\"Id\":3,\"Name\":\"Class3\"},
\「在文中。 爲什麼是這樣?如何改變它?我無法弄清楚..
編輯JsonSerializer JsonSerializer是我的助手類,它使用DataContractJsonSerializer其代碼如下序列化數據到JSON:
public class JsonSerializer
{
public string Serialize<T>(MediaTypeFormatter formatter, T value)
{
// Create a dummy HTTP Content.
Stream stream = new MemoryStream();
var content = new StreamContent(stream);
// Serialize the object.
formatter.WriteToStreamAsync(typeof(T), value, stream, content, null).Wait();
// Read the serialized string.
stream.Position = 0;
return content.ReadAsStringAsync().Result;
}
}
我想擁有的是其執行的結果 - 並沒有被改變 - 返回給用戶
我忘了補充。我需要使用DataContractJsonSerializer序列化數據,然後如何讓它序列化呢? – lixonn 2013-03-15 12:47:41
@ lukasz.pek:我已經更新了相應的答案。 – Jon 2013-03-15 12:50:40
不錯,謝謝,但我對結果還是不滿意(看看編輯過的問題) – lixonn 2013-03-15 13:06:01