簡體   English   中英

使用Json.NET在JSON數組中轉義雙引號

[英]Escaping double quotes in JSON array using Json.NET

我正在使用Json.NET生成一些JSON,然后將它們寫入webrequest流中。 這是我正在使用的代碼:

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);

這段代碼產生以下JSON:

{
  "keyName1": "XXX",
  "keyName2": 180539,
  "keyName3": [
    {"what": "xxxxx"},
    {"what": "yyyyy", "duration":30},
    {"what": "zzzzz"}],
  "keyName4":"123"
}

不幸的是,處理此JSON的Web服務期望像這樣對數組內部的鍵和值以及數組本身進行轉義:

{
  "keyName1": "XXX",
  "keyName2": 180539,
  "keyName3": "[
    {\"what\":\"xxxxx\"},
    {\"what\":\"yyyyy\",\"duration\":30},
    {\"what\":\"zzzzz\"}]",
  "keyName4":"123"
}

是否可以使用Json.NET做到這一點?

解決方法如下:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM