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

C#中JSON反序列化DeviceInfo对象失败的问题排查

System.Text.Json反序列化失败原因分析

核心问题:JSON字段类型与C#类属性类型不匹配

你的DeviceInfo类定义中,部分属性为数值类型:

public class DeviceInfo
{
    public string? ip { get; set; }
    public string? deviceKey { get; set; }
    public long time { get; set; } // Int64数值类型
    public string? version { get; set; }
    public int faceCount { get; set; } // Int32数值类型
    public int personCount { get; set; } // Int32数值类型
}

但对应的JSON字符串里,time、faceCount、personCount的值均为字符串类型(被双引号包裹):

{
   "ip": "192.168.0.146",
   "deviceKey": "A34CC830D348437A",
   "time": "1741375392869", // 字符串形式的数字
   "version": "1.41.9.7",
   "faceCount": "0", // 字符串形式的数字
   "personCount": "0" // 字符串形式的数字
}

反序列化失败的直接原因

System.Text.Json默认不支持字符串类型数字到数值类型的自动转换,当反序列化器尝试将JSON中的字符串token读取为long/int类型时,就会抛出类型不匹配的异常。错误日志里的关键提示:

Cannot get the value of a token type 'String' as a number.

直接点明问题:代码期望读取数值类型,但JSON提供的是字符串类型,两者类型不兼容导致转换失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:54:54