C# Newtonsoft json反序列化-密钥作为属性

C# Newtonsoft json反序列化-密钥作为属性,c#,json,json.net,json-deserialization,C#,Json,Json.net,Json Deserialization,我有一个json文件: ... "Key1": { "Base": 123, "Max": 1234 }, "Key2": { "Base": 123, "Max": 1234 }, "Key3": { "Base": 123, "Max": 1234 }, ... 我需要用JsonConvert.DeserializeObject(\uu json)

我有一个json文件:

...
    "Key1": {
        "Base": 123,
        "Max": 1234
    },
    "Key2": {
        "Base": 123,
        "Max": 1234
    },
    "Key3": {
        "Base": 123,
        "Max": 1234
    },
...
我需要用
JsonConvert.DeserializeObject(\uu json)将其反序列化为一个对象

但是我需要使用键(Key1、Key2、Key3等)作为反序列化对象的属性。 不幸的是,我不能使用另一种反序列化方法,也不能修改json格式

我的目标是这样的

public class Item {
    public string Id { get; set; }
    public int Base { get; set; }
    public int Max { get; set; }
}
我的Id应该是“Key1”,“Key2


有可能吗?

制作一个自定义的
类:

public class Key {
    public int Base { get; set; }
    public int Max { get; set; }
}
然后将JSON结果中的每个项存储在
字典中,其中它的键是键名,它的值是
项:

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

//you can then do stuff such as:
var maxOfKeyOne = keyCollection["Key1"].Max; 
var baseOfKeyTwo = keyCollection["Key2"].Base;
var keyCollection=newdictionary();
//然后,您可以执行以下操作:
var maxOfKeyOne=keyCollection[“Key1”].Max;
var baseofkeytow2=keyCollection[“Key2”].Base;

为什么不列出一个自定义的
类,该类具有
最大
属性?然后可以使用循环枚举每个
的属性是的,据我所知,实现这一点的唯一方法是使用自定义反射方法。这一点也不太糟糕,但我认为没有任何内置的方法hat就可以了。真正的对象更复杂,在子对象和键(枚举)上有一些属性用于计算一些数据。我使用一个大框架,从自动生成的文件反序列化,我不能更改反序列化过程或json。但我可以添加JsonConverter、ContractResolver、CustomConverter、属性或任何其他类似的内容,但我只能更新我的类。最后,我使用了一个字典并构建了我的子对象使用OnDeserialized方法进行cts,谢谢。