我有以下动作写入到的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