我正在与第三方API通信,该API返回JSON响应,如下所示:
"{\"SomeResponse\":{\"FIrstAttribute\":8,\"SecondAttribute\":\"On\",\"ThirdAttribute\":{\"Id\":2,\"FirstName\":\"Okkie\",\"Name\":\"Bokkie\",\"Street\":\"\",\"StreetNumber\":null,\"PostCode\":\"\",\"City\":\"\",\"Country\":\"}}}"
它是一种JSON ...,但是是一个字符串。注意第一个和结尾的双引号,当然还有所有的转义斜杠。
目前,我通过String来解决此问题。替换反斜杠以及第一个和最后一个引号。之后,我可以解析它。
mystring.Replace("\\", "");
但是,如果其中一个属性实际上具有反斜杠作为值怎么办?例如:
\"SecondAttribute\":\"My Super Back Slash: \\ . That was it.\"
在那种情况下,我会不小心删除值中应该存在的反斜杠。
是否有人对如何正确解析此JSON字符串有个好主意?
基本上,这是将JSON编码为JSON字符串的JSON-根据注释将字符串的末尾略微修改。在Json.NET中处理它并不是很困难,首先使用它JToken.Parse
可以有效地进行转义,然后解析结果:
using System;
using System.IO;
using Newtonsoft.Json.Linq;
class Program
{
static void Main(string[] args)
{
string text = File.ReadAllText("test.json");
JToken token = JToken.Parse(text);
JObject json = JObject.Parse((string) token);
Console.WriteLine(json);
}
}
输出:
{
"SomeResponse": {
"FIrstAttribute": 8,
"SecondAttribute": "On",
"ThirdAttribute": {
"Id": 2,
"FirstName": "Okkie",
"Name": "Bokkie",
"Street": "",
"StreetNumber": null,
"PostCode": "",
"City": "",
"Country": ""
}
}
}
即使包含反斜杠的数据也可以,因为我希望反斜杠可以再次编码-但值得再次检查。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句