【发布时间】:2023-02-23 12:28:29
【问题描述】:
我正在反序列化两个非常简单的 JSON 字典:
{"name": "Premium"}
{"na/me": "Premium"}
第一个字典中第一个条目的 JSON 路径是“名称”(正如预期的那样)。但是,第二个字典中第一个条目的 JSON 路径是“['na/me']”,但我希望它是“na/me”。谁能解释发生了什么?
下面是一些代码,以帮助更好地理解:
string object1 = @"{""name"" : ""Premium""}";
var object1Deserialized = JsonConvert.DeserializeObject<Dictionary<string,string>>(object1);
var object1JToken = JToken.FromObject(object1Deserialized);
Assert.AreEqual("name", object1JToken.Children().First().Path);
string object2 = @"{""na/me"" : ""Premium""}";
var object2Deserialized = JsonConvert.DeserializeObject<Dictionary<string, string>>(object2);
var object2JToken = JToken.FromObject(object2Deserialized);
Assert.AreEqual("['na/me']", object2JToken.Children().First().Path);
//The above test case passes
出于某种原因,object2JToken.Children().First().Path 是 "['na/me']" 而不是 "na/me"。这种行为是故意的吗?还是错误?
使用 .NET 7.0 和 Newtonsoft.Json 13.0.2。
【问题讨论】:
-
我不确定
na/me是否是有效路径,但我知道['na/me']是一个有效的 json 路径,所以至少输出是正确的。我假设这样做是为了逃避正斜杠。 -
object2Deserialized是一本字典。它的密钥是否正确如na/me?