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

使用C#反序列化JSON文件失败:results对象执行后为null

解决JSON反序列化后返回null的问题

嘿,我一眼就瞅出你遇到的问题啦!主要有两个关键原因导致反序列化后results为null,咱们一步步来搞定:

1. JSON格式不完整(最核心问题)

你提供的JSON片段只是"searchResults": [...],但这不是一个合法的顶层JSON对象——JSON反序列化要求顶层要么是用{}包裹的对象,要么是数组。现在的结构缺少外层包裹,导致JavaScriptSerializer没法把它正确映射到SearchResults类上,直接返回了null。

修正后的完整JSON应该是这样:

{
  "searchResults": [
    {
      "startTime": 1604466366253,
      "parameter": {
        "name": "CntIOParts",
        "value": 0,
        "datatype": "int"
      }
    },
    {
      "startTime": 1604478998001,
      "parameter": {
        "name": "CntIOParts",
        "value": 0,
        "datatype": "int"
      }
    }
  ]
}

2. 确保SearchResults类结构与JSON完全匹配

你的类结构必须和JSON的层级、属性名对应上(JavaScriptSerializer默认大小写敏感,除非你用特性指定映射)。正确的类定义应该是这样:

public class SearchResults
{
    // 属性名要和JSON里的"searchResults"完全一致
    public List<ResultItem> searchResults { get; set; }
}

public class ResultItem
{
    public long startTime { get; set; }
    public Parameter parameter { get; set; }
}

public class Parameter
{
    public string name { get; set; }
    public int value { get; set; }
    public string datatype { get; set; }
}

验证修正后的代码

把修正后的JSON和正确的类结构结合,你的反序列化代码就能正常工作了:

string FilePath = openfiledialog.FileName;
string JSONfile = File.ReadAllText(FilePath);
JavaScriptSerializer js = new JavaScriptSerializer();
SearchResults results = js.Deserialize<SearchResults>(JSONfile);
// 现在results应该能正确获取到数据啦

如果还是有问题,可以试着捕获ArgumentException,或者输出JSON的完整内容,确认没有其他格式错误~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:18:01