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

JSON反序列化为C#对象抛出异常,请求技术协助

解决JSON反序列化到C#对象的异常问题

咱们来一步步拆解并解决这个反序列化的问题哈,先从你抛出的异常和代码细节入手:

核心问题分析

1. JSON结构与反序列化类型不匹配

你提供的JSON最外层是数组(用[]包裹),但代码里却试图把它反序列化成单个RootObject对象——框架没法把数组直接转成单个对象,这就是抛出异常的直接原因。

2. 隐藏的数据类型不匹配

还有个容易忽略的问题:JSON里的score值是10.0(浮点数类型),但你C#类里定义的score是int(整数类型)。就算解决了数组的问题,这一步也会触发类型转换异常,得一起修复。


修复方案

第一步:调整C#类的类型定义

把DetectedLanguage中的score类型从int改为double(如果需要更高精度也可以用decimal):

public class DetectedLanguage 
{ 
    public string language { get; set; } 
    public double score { get; set; } // 适配JSON中的浮点数类型
}

public class Translation 
{ 
    public string text { get; set; } 
    public string to { get; set; } 
}

public class RootObject 
{ 
    public DetectedLanguage detectedLanguage { get; set; } 
    public List<Translation> translations { get; set; } 
}

第二步:修改反序列化的目标类型

因为JSON是数组结构,所以要把反序列化的目标类型改成List<RootObject>:

var response = client.SendAsync(request).Result;
var jsonResponse = response.Content.ReadAsStringAsync().Result;
// 将单个RootObject改为List<RootObject>匹配JSON数组
var result = JsonConvert.DeserializeObject<List<RootObject>>(jsonResponse);

修改完成后,你就可以通过result[0]来访问数组中的第一个元素,获取对应的检测语言和翻译内容啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:57:11