Asp.net mvc 将Json.net序列化回Json
如何获取Asp.net mvc 将Json.net序列化回Json,asp.net-mvc,json.net,Asp.net Mvc,Json.net,如何获取Json.net对象并将其转换回Json字符串? 我对从rest服务获得的json数据包进行反序列化。然后我处理它,最后得到一个JObjects数组。但是,我需要将其转换回JSON字符串,以将其发送到浏览器 如果我有常规对象,那么我可以只调用JsonConvert.Serialize(),但这在Json.netJObjects上不起作用。如果你有一个JObject,或者一个JArray包含JObjects,你可以简单地在JObject上调用ToString()(或JArray)获取JSO
Json.net
对象并将其转换回Json字符串?
我对从rest服务获得的json数据包进行反序列化。然后我处理它,最后得到一个JObject
s数组。但是,我需要将其转换回JSON字符串,以将其发送到浏览器
如果我有常规对象,那么我可以只调用
JsonConvert.Serialize()
,但这在Json.net
JObjects
上不起作用。如果你有一个JObject
,或者一个JArray
包含JObjects
,你可以简单地在JObject
上调用ToString()
(或JArray
)获取JSON字符串。例如:
JObject jo = new JObject();
jo.Add("foo", "bar");
jo.Add("fizz", "buzz");
JObject jo2 = new JObject();
jo2.Add("foo", "baz");
jo2.Add("fizz", "bang");
JArray ja = new JArray();
ja.Add(jo);
ja.Add(jo2);
string json = ja.ToString();
Console.WriteLine(json);
结果JSON输出:
[
{
"foo": "bar",
"fizz": "buzz"
},
{
"foo": "baz",
"fizz": "bang"
}
]
如果您有一个Jobject的常规数组,则可以将其传递给JsonConvert.SerializeObject()
:
这将提供与上面所示完全相同的JSON输出
JsonConvert.SerializeObject()
在单个JObject上也可以正常工作
:
JObject[] arrayOfJObjects = new JObject[] { jo, jo2 };
json = JsonConvert.SerializeObject(arrayOfJObjects, Formatting.Indented);
Console.WriteLine(json);
json = JsonConvert.SerializeObject(jo, Formatting.Indented);
Console.WriteLine(json);
输出:
{
"foo": "bar",
"fizz": "buzz"
}
编辑
我刚刚注意到你问题上的ASP.NETMVC标签
如果您在MVC控制器方法中,那么您可能正在执行以下操作:
return Json(arrayOfJObjects);
string json = JsonConvert.SerializeObject(arrayOfJObjects);
return Content(json, "application/json");
这将不起作用。这是因为MVC使用JavaScriptSerializer
,它不知道Json.NetJObjects
。在这种情况下,您需要使用上面列出的方法之一创建Json,然后使用内容
方法从控制器方法返回它,如下所示:
return Json(arrayOfJObjects);
string json = JsonConvert.SerializeObject(arrayOfJObjects);
return Content(json, "application/json");
也许JsonConvert.Serialize(JObjects.ToString())可以工作?asp.net的较新版本不使用json.net而不是
JavaScriptSerializer
?@KyleGobel Web API使用json.net,但出于向后兼容的原因,MVC仍然使用JavaScriptSerializer。