如何将Json.net
对象转换回json字符串?我反序列化从rest服务获得的json包。然后我处理它,最后得到一个JObject
s数组。但随后我需要将其转换回JSON字符串以将其发送到浏览器。
如果是常规对象则可以直接命名为JsonConvert.Serialize()
但Json.net
JObjects
不行
如果您有一个JObject
,或包含JObjects
的JArray
,您可以简单地在JObject
(或JArray
)上调用ToString()
来获取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"
}
]
如果你有一个常规的对象数组,你可以把它传递给JsonConvert.SerializeObject()
:
JObject[] arrayOfJObjects = new JObject[] { jo, jo2 };
json = JsonConvert.SerializeObject(arrayOfJObjects, Formatting.Indented);
Console.WriteLine(json);
这将给出与上面所示完全相同的JSON输出。
JsonConvert.SerializeObject()
也适用于单个JObject
:
json = JsonConvert.SerializeObject(jo, Formatting.Indented);
Console.WriteLine(json);
输出:{
"foo": "bar",
"fizz": "buzz"
}
编辑
我刚刚注意到ASP。. NET MVC标签
如果你在MVC控制器方法中那么你可能会做这样的事情:
return Json(arrayOfJObjects);
不能工作。这是因为MVC使用JavaScriptSerializer
,它不知道Json。Net JObjects
。在这种情况下,您需要做的是使用我上面列出的方法之一创建JSON,然后使用Content
方法从控制器方法返回它,如下所示:
string json = JsonConvert.SerializeObject(arrayOfJObjects);
return Content(json, "application/json");