如何将含大量属性的JSON反序列化为字典而非逐个创建属性?
解决方案
当然可以直接将这些属性反序列化为字典,无需逐个手动定义类属性,只需调整你的类结构即可:
调整后的类定义
把原来嵌套的ImportedSubProperties类替换为Dictionary<string, ImportedProperties>类型,修改后的类代码如下:
internal class ImportedObjects { [JsonProperty("Object")] public Dictionary<string, ImportedProperties> ImportedObject { get; set; } } internal class ImportedProperties { [JsonProperty("transformation")] public string Transformation { get; set; } [JsonProperty("source")] public string Source { get; set; } [JsonProperty("default")] public string Default { get; set; } }
注意:给
ImportedProperties的属性添加[JsonProperty]特性,确保和JSON里的小写字段名一一对应,避免反序列化时出现字段匹配失败的问题。
解析代码无需修改
你原有的读取和反序列化逻辑可以保持不变:
using (StreamReader r = new StreamReader(file)) { string json = r.ReadToEnd(); MappingObjects = JsonConvert.DeserializeObject<ImportedObjects>(json); }
访问字典中的属性
后续可以通过字典的键直接访问对应属性值,示例如下:
// 获取series的source字段值 string seriesSource = MappingObjects.ImportedObject["series"].Source; // 获取X字段的default值 string xDefault = MappingObjects.ImportedObject["X"].Default;
这样无论Object下有多少个属性,都会自动被解析到字典中,无需再手动添加任何类属性。
内容的提问来源于stack exchange,提问作者Raskolnikov
相关产品推荐
相关产品推荐

