You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用Newtonsoft.Json反序列化含动态唯一键的嵌套JSON

根因分析

反序列化失败是类型定义和JSON结构不匹配导致的:

  • 接口返回的products是键值对对象结构,商品ID(如PRODUCT_1、PRODUCT_2)是动态生成的对象属性名,不属于固定索引的数组结构
  • 最初定义的Products[]数组类型仅能匹配[]包裹的JSON数组结构,无法适配键名动态变化的对象结构。
修复方案

使用Newtonsoft.Json处理这类动态键结构时,将products属性的类型修改为Dictionary<string, Product>即可正常反序列化,完整代码参考如下:

实体类定义

public class ThirdPartyApiResponse
{
    public bool success { get; set; }
    public long lastUpdated { get; set; }
    // 字典的Key对应动态生成的商品ID,Value对应商品详情实体
    public Dictionary<string, Product> products { get; set; }
}

public class Product
{
    public string product_id { get; set; }
    public object[] sell_summary { get; set; }
    public object[] buy_summary { get; set; }
    public object quick_status { get; set; }
}

反序列化调用

// 直接调用常规反序列化方法即可,无需额外配置
var result = JsonConvert.DeserializeObject<ThirdPartyApiResponse>(rawJson);

// 后续遍历所有商品时,直接遍历字典即可
foreach (var item in result.products)
{
    string currentProductId = item.Key;
    Product currentProductInfo = item.Value;
    // 自行实现业务逻辑
}
方案优势

该写法完全兼容后续不断新增的动态商品键,不需要接口新增商品就修改实体类定义,是Newtonsoft.Json处理动态键JSON结构的标准实现方式。


内容的提问来源于stack exchange,提问作者vrexon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:39:21