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

C#使用JavaScriptSerializer反序列化时Details列表为空的问题求助

解决C# JavaScriptSerializer反序列化时Details列表为null的问题

这问题我之前处理过,一眼就能看出核心问题:JSON中的字段名和你的C#类属性名不匹配!

你的JSON里对应明细列表的字段是"details",但你的Docu类里定义的属性却是det——序列化器找不到对应关系,自然就把这个属性设为null了。下面给你两种简单的解决办法:

方法一:修改属性名匹配JSON字段

直接把Docu类里的属性名改成和JSON字段一致的details,这样序列化器会自动匹配绑定:

public class Docu
{
    public string id { get; set; }
    public string number { get; set; }
    public string date { get; set; }
    public string address { get; set; }
    public string note { get; set; }
    // 把det改成details,和JSON字段名对应
    public List<Details> details { get; set; }
}

public class Details
{
    public string id { get; set; }
    public string code { get; set; }
    public string description { get; set; }
}

方法二:用特性指定字段映射(不修改属性名)

如果不想改动属性名,可以给det属性添加[ScriptName]特性(需要引用System.Web.Script.Serialization命名空间),明确告诉序列化器要映射到JSON里的"details"字段:

using System.Web.Script.Serialization;

public class Docu
{
    public string id { get; set; }
    public string number { get; set; }
    public string date { get; set; }
    public string address { get; set; }
    public string note { get; set; }
    // 添加特性指定JSON字段名
    [ScriptName("details")]
    public List<Details> det { get; set; }
}

public class Details
{
    public string id { get; set; }
    public string code { get; set; }
    public string description { get; set; }
}

两种方法任选其一,再运行你的反序列化代码,details(或det)属性就能正确填充JSON里的明细列表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:12:46