C# 如何正确反序列化Json字符串

C# 如何正确反序列化Json字符串,c#,json,parsing,json.net,json-deserialization,C#,Json,Parsing,Json.net,Json Deserialization,我在将Json字符串解析为C#JObject时遇到了一个问题。最终结果与起始字符串不一致 该公司的主要代码如下:“无效无效无效。”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””,“MSCOR利利布“”””””””””,,“系统。系统。布尔“””””””””””,,,,,,,“系统。系统。系统。布尔,”,”,”系统。布尔,”,”,”,”,”系统。系统。布尔,”,”,”,”,”,”,

我在将Json字符串解析为C#JObject时遇到了一个问题。最终结果与起始字符串不一致

该公司的主要代码如下:“<代码>无效无效无效。”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””,“MSCOR利利布“”””””””””,,“系统。系统。布尔“””””””””””,,,,,,,“系统。系统。系统。布尔,”,”,”系统。布尔,”,”,”,”,”系统。系统。布尔,”,”,”,”,”,”,”,”,”系统。布尔,”,”系统。布尔,”,”,”,”,”,”系统。布尔,”,”,”,”,”,”,”,”,”,”,”系统。布尔,”,”,”,”,”,”,”,”,”,”系统。布尔,”,”,”,”,”系统。布尔,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”ORLIB\“]}”; var parsed=JObject.Parse(原始); 这是可行的,但我解析的对象实际上如下所示:

{{
  "System.String": [
    "AAEAAAD/////AQAAAAAAAAAGAQAAAA53d3cuZ29vZ2xlLmNvbQs=",
    "mscorlib"
  ],
  "System.Boolean": [
    "AAEAAAD/////AQAAAAAAAAAEAQAAAA5TeXN0ZW0uQm9vbGVhbgEAAAAHbV92YWx1ZQABAAs=",
    "mscorlib"
  ]
}}
正如你所见,它移除了其中一个对象,为什么

我也尝试过使用合适的转换器

var parsed2=JsonConvert.DeserializeObject(原始);

我可以通过重载设置来解决这个问题吗?

JSON不能包含两个具有相同密钥的项

System.Boolean
在JSON中出现两次

要提供一个关于为什么这是一个问题的示例,只需考虑您希望
parsed[“System.Boolean”]
返回什么

如果您正在解析的JSON是由您的系统创建的,那么您可以修改它,使其包含一个对象数组,而不是直接在其中包含键/值对

例如:

{ 
  "items" : [
      {
      "System.String": [
        "AAEAAAD/////AQAAAAAAAAAGAQAAAA53d3cuZ29vZ2xlLmNvbQs=",
        "mscorlib"]
      },
      {
        "System.Boolean": [
        "AAEAAAD/////AQAAAAAAAAAEAQAAAA5TeXN0ZW0uQm9vbGVhbgEAAAAHbV92YWx1ZQABAAs=",
        "mscorlib"]
      }
    ]
}

您的json无效。不能有两个同名的属性(System.Boolean)。使用数组而不是对象来保存值。