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

JSON响应转换为C#类时Newtonsoft.Json反序列化报错求助

JSON数组转C#类反序列化报错解决方案

问题根因

你所使用的JSON响应最外层为数组结构(以[]符号包裹),但你选择了单个对象类型Root作为反序列化目标,二者类型不匹配导致抛出序列化异常。json2csharp生成的Root类是工具默认假设JSON最外层为对象时生成的冗余类,当前场景下无需使用该类。

解决方案

1. 定义实体类

仅保留对应数组内元素的实体类即可,可按需修改类名增强语义:

// 对应原生成的MyArray类,可自定义类名
public class ModbusResponseItem
{
    public int slaveId { get; set; }
    public int funcCode { get; set; }
    public int address { get; set; }
    public int quantity { get; set; }
    public List<int> data { get; set; }
}

2. 修改反序列化代码

将反序列化目标修改为集合类型,两种常用写法如下:

  • 反序列化为泛型列表
List<ModbusResponseItem> resultList = JsonConvert.DeserializeObject<List<ModbusResponseItem>>(myJsonResponse);
// 如需获取第一个元素直接调用 resultList[0] 即可
  • 反序列化为数组
ModbusResponseItem[] resultArray = JsonConvert.DeserializeObject<ModbusResponseItem[]>(myJsonResponse);
// 如需获取第一个元素直接调用 resultArray[0] 即可

快速判断规则

后续处理JSON反序列化时可直接按外层结构匹配目标类型:

  • JSON最外层为{} → 反序列化为单个自定义类
  • JSON最外层为[] → 反序列化为List<T>或T[],T为数组内元素对应的类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:00:00