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

C# 使用JsonConvert反序列化JSON部分字段为空如何解决

反序列化失败问题解决方案

导致字段赋值失败的核心问题一共有3处,修正后即可正常反序列化所有字段:

  • JsonProperty注解配置的属性名与实际JSON字段不匹配:你提供的JSON示例中对应字段为BError、AStatus,但注解里写的是B-Error、A-Status,字段名不一致导致Newtonsoft.Json无法匹配赋值
  • 类成员定义存在拼写错误:Demo类中Name属性的访问修饰符错写为pulic,正确应为public,语法错误会影响序列化赋值逻辑
  • 反序列化步骤冗余且存在风险:先将JSON反序列化为object再转字符串二次反序列化的操作没有必要,多步转换可能导致字段丢失

修正后的代码

实体类定义

public class Demo
{
    [JsonProperty("Date")]
    public DateTime? Date { get; set; }
    
    // 修正拼写错误
    public string Name { get; set; }
    
    // 修正JsonProperty值与JSON字段匹配
    [JsonProperty("BError")]
    public BError BError { get; set; }
    
    // 修正JsonProperty值与JSON字段匹配
    [JsonProperty("AStatus")]
    public bool AStatus { get; set; }
}
    
public class BError
{
    public string code { get; set; }
    public string details { get; set; }
}

反序列化代码

// 直接一步反序列化即可,无需多余转换
Demo d = JsonConvert.DeserializeObject<Demo>(input_JSON_string);

补充说明:如果你的实际业务返回的JSON字段确实是带横杠的B-Error和A-Status,则是你提供的JSON示例有误,此时不需要修改JsonProperty注解,只需要修正Name的拼写错误+优化反序列化步骤即可正常赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:04