【发布时间】:2015-01-01 03:54:07
【问题描述】:
我有一个 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, ...
有可能吗?
【问题讨论】:
-
为什么不列出具有
Base和Max属性的自定义Key类?然后,您可以使用循环枚举每个Key的属性 -
是的,据我所知,唯一的方法是使用自定义反射方法。这一点也不坏,但我认为没有任何内置功能可以做到这一点。
-
真实对象更复杂,在子对象上有一些 OnDeserialization 属性,键(一个枚举)用于计算一些数据。我使用了一个从自动生成的文件反序列化的大框架,我无法更改反序列化过程或 json。但我可以添加 JsonConverter、ContractResolver、CustomConverter、属性或任何其他类似的东西,但我只能更新我的类。
标签: c# json json.net json-deserialization