【发布时间】:2019-06-12 13:56:42
【问题描述】:
在将 Json 字符串解析为 C# JObject 时遇到问题。最终结果与起始字符串不一致。
var original = "{\"System.String\":[\"AAEAAAD/////AQAAAAAAAAAGAQAAAA53d3cuZ29vZ2xlLmNvbQs=\", \"mscorlib\"],\"System.Boolean\":[\"AAEAAAD/////AQAAAAAAAAAEAQAAAA5TeXN0ZW0uQm9vbGVhbgEAAAAHbV92YWx1ZQABAAs=\", \"mscorlib\"],\"System.Boolean\":[\"AAEAAAD/////AQAAAAAAAAAEAQAAAA5TeXN0ZW0uQm9vbGVhbgEAAAAHbV92YWx1ZQABAAs=\", \"mscorlib\"]}";
var parsed = JObject.Parse(original);
这可行,但我解析的对象实际上如下所示:
{{
"System.String": [
"AAEAAAD/////AQAAAAAAAAAGAQAAAA53d3cuZ29vZ2xlLmNvbQs=",
"mscorlib"
],
"System.Boolean": [
"AAEAAAD/////AQAAAAAAAAAEAQAAAA5TeXN0ZW0uQm9vbGVhbgEAAAAHbV92YWx1ZQABAAs=",
"mscorlib"
]
}}
如您所见,它移除了其中一个对象,为什么?
我也尝试过使用正确的转换器
var parsed2 = JsonConvert.DeserializeObject<JObject>(original);
我可以通过重载设置来解决这个问题吗?
【问题讨论】:
-
您的 json 无效。您不能有两个同名的属性 (System.Boolean)。使用数组而不是对象来保存您的值。
标签: c# json parsing json.net json-deserialization