Json.net捕获重复项并抛出错误

时间:2012-10-09 18:22:45

标签: c# json json.net

  

可能重复:
  Json.NET (Newtonsoft.Json) - Two 'properties' with same name?

我正在使用JSON.NET将JSON文件反序列化为字典。现在我想做的是有以下几行:

JsonConvert.DeserializeObject<IDictionary<string, object>>(text);
如果JSON中有重复的条目,则抛出异常,如下所示:

{
    "ExampleText": "Example 1",
    "ExampleText": "Example 2",
    "ExampleText": "Example 3",
}

标准的JSON.NET行为是简单地将“ExampleText”条目替换为JSON中最后一个条目。是否可以抛出异常?

2 个答案:

答案 0 :(得分:0)

如果你在msdn

中查看IDictionary
  

“每个关联必须有唯一的密钥”

重复键中的问题。我认为你应该使用另一个系列。

试试这个

class MyValue
{
  public string Key {get; set;}
  public string Value {get; set;}
}

JsonConvert.DeserializeObject<List<MyValue>>(text);

答案 1 :(得分:0)

<强> - 编辑 -

您无需反序列化为IDictionary<string, object>JObject已实施IDictionary<string, JToken>

var obj = (JObject)JsonConvert.DeserializeObject(json); //will throw exception for dublicates.
var str = (string)obj["ExampleText"];