Gon*_*ioz 17 .net c# string json
我正在与第三方API进行通信,该API返回JSON响应,如下所示:
"{\"SomeResponse\":{\"FIrstAttribute\":8,\"SecondAttribute\":\"On\",\"ThirdAttribute\":{\"Id\":2,\"FirstName\":\"Okkie\",\"Name\":\"Bokkie\",\"Street\":\"\",\"StreetNumber\":null,\"PostCode\":\"\",\"City\":\"\",\"Country\":\"}}}"
Run Code Online (Sandbox Code Playgroud)
它是一种JSON ......但是作为一个字符串.注意第一个和结尾的双引号,当然还有所有的转义斜杠.
目前,我通过String解决这个问题.放置反斜杠以及第一个和最后一个引号.在那之后,我能够解析它.
mystring.Replace("\\", "");
Run Code Online (Sandbox Code Playgroud)
但是,如果其中一个属性实际上有一个反斜杠作为值呢?例如:
\"SecondAttribute\":\"My Super Back Slash: \\ . That was it.\"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我会不小心删除值中应该存在的反斜杠.
有没有人对如何正确解析这个JSON字符串有一个好主意?
Jon*_*eet 23
这基本上是JSON编码为 JSON字符串 - 根据评论稍微对字符串结尾进行篡改.在Json.NET中处理它并不是很难,首先使用JToken.Parse有效的unescape,然后解析结果:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
{
"SomeResponse": {
"FIrstAttribute": 8,
"SecondAttribute": "On",
"ThirdAttribute": {
"Id": 2,
"FirstName": "Okkie",
"Name": "Bokkie",
"Street": "",
"StreetNumber": null,
"PostCode": "",
"City": "",
"Country": ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使数据包含反斜杠,这应该没问题,因为我希望反斜杠再次被编码 - 但值得仔细检查.
小智 6
通过使用Newtonsoft.Json,下面是一个示例:
String json="{\"SomeResponse\":{\"FIrstAttribute\":8,\"SecondAttribute\":\"On\",\"ThirdAttribute\":{\"Id\":2,\"FirstName\":\"Okkie\",\"Name\":\"Bokkie\",\"Street\":\"\",\"StreetNumber\":null,\"PostCode\":\"\",\"City\":\"\",\"Country\":\"}}}";
dynamic result = JsonConvert.DeserializeObject(json);
Run Code Online (Sandbox Code Playgroud)