【发布时间】:2022-01-09 04:45:23
【问题描述】:
我有以下 json 被第三方 api 返回
{
'category':'Cat1',
'date': '12-12-2021'
'amount' 23.23
}
正在反序列化为以下 C# 类
public class Quote{
public string category {get;set;}
public DateTime date {get;set;}
public decimal amount {get;set;}
}
但有时我们会得到None 作为值,例如:
{
'category': None,
'date': None
'amount' None
}
应用程序在反序列化时出错,实际上它在尝试序列化之前解析 json 时出错。
JsonConvert.DeserializeObject<Quote>(json, settings);<--exception here
'Error parsing NaN value. Path 'category', line X, position XX.'
我们尝试使用json.Replace("None", "null"); 将None 替换为null,但是当它尝试将日期和金额(分别为DateTime 和十进制类型)设置为null 时出现异常。
有没有办法检查传入的值,每当我们得到None 时,我们将属性设置为default(Type) 值,或者在JsonSerializerSettings 中全局设置,或者单独使用自定义属性?
【问题讨论】:
-
所以你实际上是在说你得到了无效的 JSON - 你的第一个例子实际上也是无效的 - 嗯,他们都是真的
-
第一个 JSON 很好......我没有复制粘贴实际的 json............问题是
None相当于 C# @ 987654335@ 或default(Type)类型不能为null。 -
您可以查看自定义反序列化以检查“无”并将其设为空吗? newtonsoft.com/json/help/html/CustomJsonConverterGeneric.htm
标签: c# json json-serialization