如何在C#中将JSON数组反序列化为List集合?
解决JSON数组反序列化为List集合的问题
核心修改思路
你之前的代码是针对单个JSON对象反序列化的,现在要处理JSON数组,只需要把反序列化的目标类型从单个模型类改成List<你的模型类>即可,具体步骤如下:
- 确认数据模型类与JSON字段匹配
假设你的数据模型类是这样的(根据实际JSON结构调整属性):
public class YourDataModel { // 示例属性,替换成你实际的字段 public int Id { get; set; } public string Title { get; set; } public decimal Price { get; set; } }
如果JSON里的字段名和类的属性名不一致,用[JsonPropertyName]特性做映射:
public class YourDataModel { [JsonPropertyName("goods_id")] public int Id { get; set; } [JsonPropertyName("goods_title")] public string Title { get; set; } }
- 修改反序列化代码
原来的错误代码(针对单个对象):
// 错误:用单个对象接收数组,会抛出JsonException var result = JsonSerializer.Deserialize<YourDataModel>(jsonContent);
修改后的正确代码(接收数组为List集合):
// 正确:用List<T>接收JSON数组 var modelList = JsonSerializer.Deserialize<List<YourDataModel>>(jsonContent);
- 可选:配置反序列化选项
如果需要忽略大小写、处理空值等,可以传入JsonSerializerOptions:
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true, // 忽略字段名大小写 IgnoreNullValues = true // 忽略JSON中的空值字段 }; var modelList = JsonSerializer.Deserialize<List<YourDataModel>>(jsonContent, options);
内容的提问来源于stack exchange,提问作者SqueezeOJ
相关产品推荐
相关产品推荐

