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

Newtonsoft反序列化含$type的JSON时触发JsonReaderException求助

解决Newtonsoft.Json反序列化含$type元数据的object属性报错问题

问题原因

你的Data类标记了[JsonConstructor]的构造函数中,SourceData参数被定义为string类型,但实际序列化的是List<int>对象。反序列化时,Newtonsoft.Json会优先使用该构造函数,它尝试将带有$type元数据的复杂对象解析为字符串——而解析器预期字符串以引号开头,实际却遇到了对象的{符号,因此抛出JsonReaderException。

解决方案

修改构造函数的SourceData参数类型,使其与类中对应属性的object类型保持一致:

[JsonConstructor]
public Data(string Source = "", object SourceData = null, bool IsActive = false, bool IsClickable = true)
{
    this.IsActive = IsActive;
    this.Source = Source;
    this.SourceData = SourceData;
    this.IsClickable = IsClickable;
}

修改后,配合已配置的TypeNameHandling.Auto,反序列化时会正确识别$type元数据,将SourceData还原为原本的List<int>对象。

验证

重新运行代码,反序列化后的dataDes.SourceData会是List<int>类型,包含元素1、2、3,且不会再抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:15:42