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

JSON反序列化时构造函数参数全为null问题求助

问题分析与解决方案

我帮你排查了几个关键问题,这就是导致反序列化失败、所有参数为null的核心原因:

1. 自定义构造函数的参数不兼容

你标记了[JsonConstructor]的构造函数要求必须传入children参数,但第一个JSON里并没有这个字段,JSON序列化库找不到匹配的构造函数,就会生成一个默认实例(所有字段为null)。另外,构造函数里的rolePermission参数用了string类型,虽然你手动做了int转换,但JSON库本身可以自动处理字符串转int的逻辑,多这一步反而容易引发类型匹配问题。

2. Children的类型与JSON结构不匹配

你的Page类里children定义为Page[]数组,但你提供的带children的JSON里,children是一个嵌套的对象({"page": {...}}),而非数组格式,类型完全不兼容,反序列化自然失败。

3. 缺少无参构造函数(兼容性问题)

多数JSON序列化库(比如Newtonsoft.Json)会优先使用自定义构造函数,但如果构造函数参数无法完全匹配JSON字段,就会出现实例化异常或空值问题。


修复后的Page类代码

using Newtonsoft.Json;

public class Page 
{
    public int RolePermission { get; set; }
    public string Icon { get; set; }
    public string Title { get; set; }
    public string Url { get; set; }
    
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public Page[] Children { get; set; }

    // 给children参数添加默认值,适配无此字段的JSON
    [JsonConstructor]
    public Page(int rolePermission, string icon, string title, string url, Page[] children = null) 
    {
        RolePermission = rolePermission;
        Icon = icon;
        Title = title;
        Url = url;
        Children = children;
    }

    // 可选:添加无参构造函数,提升序列化库的兼容性
    public Page() {}
}

正确的JSON格式示例

无children的JSON

{ 
    "page": { 
        "rolePermission":"2", 
        "icon":"dashboard", 
        "title":"Dashboard", 
        "url":"Dashboard" 
    } 
}

带children的JSON(注意children是数组格式)

{ 
    "page": { 
        "rolePermission":"2", 
        "icon":"dashboard", 
        "title":"Dashboard", 
        "url":"Dashboard", 
        "children": [
            {
                "rolePermission":"2", 
                "icon":"dashboard", 
                "title":"Dashboard", 
                "url":"Dashboard"
            }
        ] 
    } 
}

额外说明

  • 我把字段名改成了C#规范的帕斯卡命名法,Newtonsoft.Json默认会自动映射JSON的小驼峰命名,无需额外配置。
  • 如果你的业务场景中children确实是嵌套的{"page": {...}}结构,那需要把Children字段改成Page类型(而非数组),或者调整JSON结构为数组,具体取决于你的需求。

内容的提问来源于stack exchange,提问作者Mr.Deer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:12:43