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

Newtonsoft json deserialization - key as property

我有一个 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; }
}

My Id的应该是"Key1", "Key2, ...

可能吗?

自定义 Key class:

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;