我正在反序列化两个非常简单的JSON字典:{"name": "Premium"}
{"na/me": "Premium"}
第一个字典中第一个条目的JSON路径是“name”(如预期的那样),然而,第二个字典中第一个条目的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。
2条答案
按热度按时间vsnjm48y1#
为什么您使用
Newtonsoft.Json
,而.NET 7有一个很棒的built-in standard serializer!!您所期望输出
lrl1mhuk2#
你的代码甚至不能编译,你有两行做同样的事情。试试这个