反序列化具有嵌套字典的JSON文件

时间:2016-03-10 23:58:12

标签: c# json.net

我有以下JSON文件,

 {
 "NAME": {
    "ABC": {
        "Score": 2, 
        "violations": []
    }, 
    "DEF": {
        "Score": 4, 
        "violations": []
    }, 

    "GHI": {
        "Score": 6, 
        "violations": ["badform"]
    }
  }

我试图通过创建一个类去除这个,但是我发现构造类非常困难,因为我要么得到空值,要么JSON.net崩溃。谁能告诉我构建反序列化器的最佳方法呢?

1 个答案:

答案 0 :(得分:2)

这应该可行(至少它可以在这里工作,如果我在JSON文件的末尾添加缺少的“}”:

using ParsedData = Dictionary<string, Dictionary<string, A>>;

class A {
    public int Score;
    public string[] violations;
}

var parsed = JsonConvert.DeserializeObject<ParsedData>(…);

另一个版本:

class A {
    public int Score;
    public string[] violations;
}

class B : Dictionary<string, A> {}
class C : Dictionary<string, B> {}

var parsed = JsonConvert.DeserializeObject<C>(…);