WebApiコントローラーで次のアクションを記述しています。
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、item);
データを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;
}
}
私が欲しいのは、その実行の結果であり、変更されることなく、ユーザーに返されます