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

C# JSON解析问题求助:无法解析指定JSON格式

解决C#解析JSON的不匹配问题

嘿,我一眼就看到几个导致你解析失败的问题,咱们逐个修正:

1. JSON数组 vs 单个对象不匹配

你的JSON里data字段是数组(用[]包裹着一组对象),但你在C#里把data声明成了单个Data对象,这完全不匹配!得把根类里的data改成数组或者List<Data>类型才能正确解析。

2. 数据类型不一致

JSON里的id是数值类型(3),但你C#类里把id定义成了string。虽然部分序列化库能自动转换,但严格保持类型一致能避免很多潜在问题,建议改成int类型。

3. 无效JSON的逗号问题

你的JSON里"code": "‎0000004",末尾多了个多余的逗号,虽然有些宽松的解析器能忽略,但这属于无效JSON,建议删掉它让格式更规范。


修正后的C#类定义

// 根类,对应整个JSON结构
public class RootObject
{
    // 用List<Data>对应JSON里的data数组
    public List<Data> data { get; set; }
}

public class Data
{
    // 改成int匹配JSON里的数值id
    public int id { get; set; }
    public string code { get; set; }
}

解析示例(以Newtonsoft.Json为例)

using Newtonsoft.Json;

// 注意已经去掉了多余逗号的有效JSON
string json = "{ \"data\": [ { \"id\": 3, \"code\": \"0000004\" } ] }";
var parsedResult = JsonConvert.DeserializeObject<RootObject>(json);

// 访问解析后的数据
int firstId = parsedResult.data[0].id; // 输出3
string firstCode = parsedResult.data[0].code; // 输出"0000004"

如果你用的是.NET Core/.NET 5+自带的System.Text.Json,解析代码是这样的:

using System.Text.Json;

var parsedResult = JsonSerializer.Deserialize<RootObject>(json);

额外提示:关于code里的隐藏字符

你的code值‎0000004前面有个看不见的左-to-right标记(U+200E),如果不需要这个字符,可以在解析后移除:

parsedResult.data[0].code = parsedResult.data[0].code.Trim('\u200E');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:11:11