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

本文关键字:属性 json 反序列化 Newtonsoft | 更新日期: 2023-09-27 18:35:45

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

我的 ID 应该是 "Key1", "Key2, ...

可能吗?

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

创建自定义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;