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