JSON反序列化为对象时如何将dependency字段映射为字典结构
解决方案
完全可以实现该需求,你当前使用的Newtonsoft.Json库原生支持将JSON键值对结构直接反序列化为Dictionary<string, string>类型,不需要单独定义Dependency类,仅需修改Root类的字段类型即可。
修改后的代码如下:
// 仅保留结构固定的Assets类即可,无需定义Dependency类 public class Assets { public List<string> images { get; set; } } public class Root { public int uniqueID { get; set; } public string url { get; set; } // 把原来的Dependency类型替换为Dictionary<string, string> public Dictionary<string, string> dependency { get; set; } public Assets assets { get; set; } } static void Main(string[] args){ string jsonInput = File.ReadAllText(args[0]); Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(jsonInput); // 使用示例:获取指定包的版本 string package1Version = myDeserializedClass.dependency["package1"]; // 遍历所有依赖包 foreach (var package in myDeserializedClass.dependency) { Console.WriteLine($"包名:{package.Key},版本:{package.Value}"); } }
补充说明
- 后续
dependency下新增任意包名、版本条目,都不需要修改实体类结构,反序列化时会自动添加到字典中 - 如果你后续切换到.NET官方的System.Text.Json序列化库,该映射规则同样适用,不需要额外配置
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

