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, ...
可能吗?
创建自定义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;