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

无法将请求结果反序列化为Countries模型,变量始终为null求助

排查Json反序列化后对象为null的问题

常见原因及解决步骤

  • JSON结构与类定义不匹配
    这是最核心的问题。你的Countries类根节点是一个包含countries数组的对象,所以JSON必须对应这个结构,比如:

    {
      "countries": [
        {
          "countryName": "China",
          "region": "Asia",
          "code": "CN"
        }
      ]
    }
    

    如果你的JSON直接是国家数组(比如[{"countryName":"..."}]),那应该直接反序列化为List<Country>:

    var Mycountries = JsonConvert.DeserializeObject<List<Country>>(body);
    
  • 属性名称大小写不匹配
    Json.NET默认区分大小写,如果JSON中的键是CountryName而类属性是countryName,会导致映射失败。可以通过特性指定匹配键名:

    public class Country
    {
        [JsonProperty("CountryName")]
        public string countryName { get; set; }
        [JsonProperty("Region")]
        public string region { get; set; }
        [JsonProperty("Code")]
        public string code { get; set; }
    }
    

    或者全局配置忽略大小写:

    var settings = new JsonSerializerSettings
    {
        ContractResolver = new CamelCasePropertyNamesContractResolver()
    };
    var Mycountries = JsonConvert.DeserializeObject<Countries>(body, settings);
    
  • JSON内容为空或格式非法
    先输出body变量的实际内容,确认是否为空字符串,或者JSON格式是否有语法错误(比如缺少括号、逗号)。空内容或非法格式会直接导致反序列化返回null。

  • 类的访问权限问题
    确保Countries和Country类是public修饰,属性的get访问器正常(你的当前代码已满足,但如果有修改需再次确认)。

  • Json.NET版本兼容问题
    旧版本的Json.NET可能存在序列化bug,尝试更新到最新稳定版。

调试技巧

  • 直接打印body内容,确认输入数据是否符合预期。
  • 捕获反序列化异常定位具体错误:
    try
    {
        var Mycountries = JsonConvert.DeserializeObject<Countries>(body);
    }
    catch (JsonException ex)
    {
        Console.WriteLine(ex.Message);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:40:32