我想使用NewtonSoft.json的JObject.Parse()
解析json字符串。假设json字符串如下:
{"json":"{"count":"123"}"}
jObject.First.ToString()
的结果是"json": "{"count":"123"}"
。jObject["json"].ToString()
的结果是{"count":"123"}
。枚举得到的结果与此相同。
我使用的测试代码是这样的。
[TestMethod()]
public void JsonParseTest()
{
var json = "{"json":"{\"count\":\"123\"}"}";
var jObject = JObject.Parse(json);
Console.WriteLine($"json : {json}");
Console.WriteLine($"jObject.First.ToString() : {jObject.First}");
Console.WriteLine($"jObject["json"].ToString() : {jObject["json"]}");
}
我们可以看到,枚举jObject将丢失字符'\'。问题出在哪里?如果有任何建议,我将不胜感激:(
第1版NewtonSoft的版本为12.0.3,于2019.11.09发布。
解析器没有丢失任何东西。在您的示例中没有文字。反斜杠纯粹是JSON语法的一部分,用于转义字符串vlue中的
"
。关键字json
的值为{"count":"123"}
。
如果你想在这个值中有反斜杠(但我不明白你为什么要这样(,那么你需要添加它们,就像你在C#字符串中添加它们一样(C#和JSON碰巧有相同的转义机制(:
{"json":"{\"count\":\"123\"}"}
带有指向C#代码的引线:
var json = "{"json":"{\\\"count\\\":\\\"123\\\"}"}";