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

含嵌套数组的JSON反序列化失败问题求助

解决JSON嵌套数组反序列化失败问题

错误核心原因:JSON中的accounts是一个直接的对象数组([...]),但你的C#实体ShipmentData里的Accounts字段对应的是Accounts类(要求JSON对象格式{...}),两者结构不匹配导致反序列化失败。

方案一:修改C#实体适配JSON结构(推荐)

直接调整ShipmentData类中Accounts的类型,让它直接对应JSON里的数组结构,同时删除多余的Accounts中间类:

修改后的实体代码:

public class ShipmentData
{
    public string PlannedShippingDateAndTime { get; set; }
    public Pickup Pickup { get; set; }
    public string ProductCode { get; set; } = "N";
    // 用数组直接匹配JSON的accounts数组
    public ArrayAccounts[] Accounts { get; set; }
    // 或者使用List<T>,比数组更灵活
    // public List<ArrayAccounts> Accounts { get; set; }
}

public class Pickup
{
    public bool isRequested { get; set; }
}

public class ArrayAccounts
{
    public string TypeCode { get; set; }
    public string Number { get; set; }
}

方案二:修改JSON格式适配现有实体(不推荐,除非实体结构不能改)

如果必须保留当前的C#实体结构,需要调整JSON的accounts字段为包含数组的对象,与Accounts类的结构对应:

修改后的JSON:

{
   "plannedShippingDateAndTime": "2023-02-07T07:06:00 GMT+01:00",
   "pickup": {
       "isRequested": false
   },
   "productCode": "N",
   "accounts": {
       "arrayAccounts": [
           {
               "typeCode": "shipper",
               "number": "999999999"
           }
       ]
   }
}

补充说明

  • 序列化框架(如Newtonsoft.Json或System.Text.Json)默认会自动处理C#帕斯卡命名(TypeCode)与JSON驼峰命名(typeCode)的映射,无需额外配置。
  • 优先选择方案一,因为通常JSON结构由外部系统或前端定义,后端实体应适配该结构而非反向修改JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:52:37