0

可能重复:
Json.NET (Newtonsoft.Json) - 两个同名的“属性”?

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

JsonConvert.DeserializeObject<IDictionary<string, object>>(text);

如果 JSON 中有重复的条目,则抛出异常,如下所示:

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

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

4

2 回答 2

0

- 编辑 -

您不需要反序列化为IDictionary<string, object>. JObject已经实现IDictionary<string, JToken>

var obj = (JObject)JsonConvert.DeserializeObject(json); //will throw exception for dublicates.
var str = (string)obj["ExampleText"];
于 2012-10-09T19:53:01.917 回答
0

如果您查看 msdn 中的 IDictionary

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

您在重复键中的问题。我认为你应该使用另一个集合。

尝试这个

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

JsonConvert.DeserializeObject<List<MyValue>>(text);
于 2012-10-09T18:40:30.907 回答