[英]Escaping double quotes in JSON array using Json.NET
I'm using Json.NET to generate some JSON that I write into a webrequest stream. 我正在使用Json.NET生成一些JSON,然后将它们写入webrequest流中。 Here's the code I'm using: 这是我正在使用的代码:
dynamic jsonObject = new JObject();
jsonObject.keyName1 = "XXX";
jsonObject.keyName2 = 180539;
jsonObject.keyName3 = new JArray() as dynamic;
dynamic jsonObject2 = new JObject();
jsonObject2.what = "xxxxx";
jsonObject.keyName3.Add(jsonObject2);
jsonObject2 = new JObject();
jsonObject2.what = "yyyyy";
jsonObject2.duration = 30;
jsonObject.keyName3.Add(jsonObject2);
jsonObject2 = new JObject();
jsonObject2.what = "zzzz";
jsonObject2.keyName3.Add(jsonObject2);
jsonObject.keyName4 = "123";
string json = JsonConvert.SerializeObject(jsonObject);
This code produces the following JSON: 这段代码产生以下JSON:
{
"keyName1": "XXX",
"keyName2": 180539,
"keyName3": [
{"what": "xxxxx"},
{"what": "yyyyy", "duration":30},
{"what": "zzzzz"}],
"keyName4":"123"
}
Unfortunately, the web service that processes this JSON expects the keys and values inside of an array as well as the array itself to be escaped like this: 不幸的是,处理此JSON的Web服务期望像这样对数组内部的键和值以及数组本身进行转义:
{
"keyName1": "XXX",
"keyName2": 180539,
"keyName3": "[
{\"what\":\"xxxxx\"},
{\"what\":\"yyyyy\",\"duration\":30},
{\"what\":\"zzzzz\"}]",
"keyName4":"123"
}
Is it possible to do this with Json.NET? 是否可以使用Json.NET做到这一点?
Here is the solution: 解决方法如下:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
...
dynamic jsonObject = new JObject();
jsonObject.keyName1 = "XXX";
jsonObject.keyName2 = 180539;
jsonObject.keyName3 = new JArray() as dynamic;
dynamic jsonArrayObject = new JArray() as dynamic;
dynamic jsonObject2 = new JObject();
jsonObject2.what = "xxxxx";
jsonArrayObject.Add(jsonObject2);
jsonObject2 = new JObject();
jsonObject2.what = "yyyyy";
jsonObject2.duration = 30;
jsonArrayObject.Add(jsonObject2);
jsonObject2 = new JObject();
jsonObject2.what = "zzzz";
jsonArrayObject.Add(jsonObject2);
var jsonArrayString = JsonConvert.SerializeObject(jsonArrayObject, Formatting.None);
jsonObject.keyName3 = jsonArrayString;
jsonObject.keyName4 = "123";
string json = JsonConvert.SerializeObject(jsonObject, Formatting.None);
在.Net4 +中System.Web.HttpUtility.JavaScriptStringEncode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.