Newtonsoft json反序列化 - 作为属性的关键

时间:2015-01-01 03:54:07

标签: c# json json.net json-deserialization

我有一个json文件:

...
    "Key1": {
        "Base": 123,
        "Max": 1234
    },
    "Key2": {
        "Base": 123,
        "Max": 1234
    },
    "Key3": {
        "Base": 123,
        "Max": 1234
    },
...

我需要将其反序列化为JsonConvert.DeserializeObject<T>(__json);

的对象

但是我需要使用键(Key1,Key2,Key3,...)作为我的反序列化对象的属性。 不幸的是,我无法使用备用反序列化方法,我无法修改json格式。

我的对象就是那样

public class Item {
    public string Id { get; set; }
    public int Base { get; set; }
    public int Max { get; set; }
}

我的身份证应该是“Key1”,“Key2,......

有可能吗?

1 个答案:

答案 0 :(得分:2)

制作自定义Key课程:

public class Key {
    public int Base { get; set; }
    public int Max { get; set; }
}

然后将JSON结果中的每个项目存储在Dictionary中,其中键是键名称,其值为Key项:

var keyCollection = new Dictionary<string, Key>();

//you can then do stuff such as:
var maxOfKeyOne = keyCollection["Key1"].Max; 
var baseOfKeyTwo = keyCollection["Key2"].Base;