Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Json.net不再在重复的情况下抛出_C#_Json_Duplicates_Json.net_Deserialization - Fatal编程技术网

C# Json.net不再在重复的情况下抛出

C# Json.net不再在重复的情况下抛出,c#,json,duplicates,json.net,deserialization,C#,Json,Duplicates,Json.net,Deserialization,我正在尝试将我的C#应用程序从Newtonsoft.JSON 6升级到最新版本(9.0.1) 我注意到,当反序列化包含重复元素的对象时,行为发生了变化,例如: { "name": "test", "data": { "myElem": 1, "myElem": 2 } } 在反序列化此类对象时,Json.net先前抛出了ArgumentException。现在反序列化成功了,它似乎使用了最后一个重复键的值(因此在上面的示例中

我正在尝试将我的C#应用程序从Newtonsoft.JSON 6升级到最新版本(9.0.1)

我注意到,当反序列化包含重复元素的对象时,行为发生了变化,例如:

{
     "name": "test",
     "data":
     {
        "myElem": 1,
        "myElem": 2
    }
}
在反序列化此类对象时,Json.net先前抛出了ArgumentException。现在反序列化成功了,它似乎使用了最后一个重复键的值(因此在上面的示例中为“2”)

从我所读到的,有一些关于重复的争论,但是RFC只建议使用唯一的键

为了验证应用程序接收到的数据,我希望保留前面的行为。有没有办法配置Json.net来实现这一点?我试图查看JsonSerializerSettings,但没有找到任何符合我需要的内容

我用于反序列化JSON的代码:

JsonSerializer.Create(new JsonSerializerSettings())
                          .Deserialize<JObject>(new JsonTextReader(new StringReader(rawJson));
JsonSerializer.Create(新建JsonSerializerSettings())
.反序列化(新JsonTextReader(新StringReader(rawJson));

JsonConvert.DeserializeObject(rawJson);

根据作者的说法,这似乎是不可能的。谢谢你的链接。很遗憾,这种行为的改变没有任何保留以前行为的意思
JsonConvert.DeserializeObject<JObject>(rawJson);