将Json.net序列化回JSON



如何将Json.net对象转换回json字符串?我反序列化从rest服务获得的json包。然后我处理它,最后得到一个JObject s数组。但随后我需要将其转换回JSON字符串以将其发送到浏览器。

如果是常规对象则可以直接命名为JsonConvert.Serialize()Json.net JObjects不行

如果您有一个JObject,或包含JObjectsJArray,您可以简单地在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");

相关内容

  • 没有找到相关文章