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

C#用Newtonsoft反序列化JSON时数字类名属性名不合法如何解决

解决方案

你可以使用Newtonsoft.Json内置的JsonProperty特性绕过C#命名规范限制:该特性可以手动指定C#属性与JSON键名的映射关系,你只需要将C#类、属性命名为符合规范的名称,再通过特性绑定对应JSON的数字键名即可。

正确的类定义示例

首先引入Newtonsoft.Json命名空间:

using Newtonsoft.Json;

编写符合C#命名规范的映射类:

// 原非法名称为2的类可自定义合法名称,此处命名为SprintDetail
public class SprintDetail
{
    public int id { get; set; }
    public string name { get; set; }
    public string state { get; set; }
    public int boardId { get; set; }
}

public class Customfield10323
{
    // 绑定JSON中键为"1"的属性
    [JsonProperty("1")]
    public List<string> SprintRawEntries { get; set; }

    // 绑定JSON中键为"2"的属性
    [JsonProperty("2")]
    public List<SprintDetail> SprintStructuredEntries { get; set; }
}

public class Root
{
    public Customfield10323 customfield_10323 { get; set; }
}

反序列化用法

直接按正常流程调用反序列化方法即可,Newtonsoft会自动按照JsonProperty指定的键名做匹配:

var result = JsonConvert.DeserializeObject<Root>(你的JSON字符串);

扩展说明

如果后续接口返回的数字键是动态不固定的,你也可以用字典类型接收该层级的内容,无需提前定义所有键:

public class Customfield10323
{
    // 键为JSON的数字属性名,值为对应的内容
    public Dictionary<string, object> DynamicFields { get; set; }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 16:09:00