c# - 处理 json 反序列化中的“输入字符串不是有效数字”错误
问题描述
使用 Newtonsoft.Json,我需要反序列化一个包含数字“2.696539702293474e308”的 json,这是他们表达 NaN 的方式
以下代码几乎可以工作
public class MyClass
{
public double[] VectorOfDoubles;
}
private static void Do()
{
var errors = new List<string>();
var content = "{ " +
"\"VectorOfDoubles\" : [0.2, 0.3] " +
", \"WithNans\" : [0.4, 2.696539702293474e308] " +
"}";
var output = JsonConvert.DeserializeObject<MyClass>(content, new JsonSerializerSettings
{
Error = (currentObject, errorArgs) =>
{
errors.Add(errorArgs.ErrorContext.Error.Message);
errorArgs.ErrorContext.Handled = true;
},
});
}
通过上面的示例,我得到了我需要的东西:.DeserializeObject 返回一个填充了“VectorOfDoubles”的 MyClass。实际上,我什至不关心“WithNans”向量。“错误”中有正确的一项:
"Input string '2.696539702293474e308' is not a valid number. Path 'WithNans[1]', line 1, position 75."
如果 WithNans 包含一个以上的违规项目,则会出现问题,例如
"WithNans" [0.4, 2.696539702293474e308, 2.696539702293474e308]
在这种情况下,错误包含两个项目,但 .DeserializeObject 返回 null
为什么?有没有办法完全忽略某个领域的所有项目?
解决方案
推荐阅读
- r - Excel/R 中的矩阵操作
- python - Pandas 在同一数据框中使用多列映射 groupby
- reactjs - gulp serve 命令无法在 SPFX 上使用 react
- php - 使用单个查询从两个不同的 mysql 表中获取数据时遇到问题..!
- linux - 无需持续远程桌面连接即可运行 GUI
- angular - @Input / @Output 属性的角度描述
- rest - 如何保护 API 端点以报告客户端 JS 错误以防止垃圾邮件(如果有必要)?
- flutter - 如何使彩色填充框和文本小部件内联?
- dart - 如何从小部件中的 firestore 检索数据?
- r - 如果在一定数量的行中 NA 的数量大于 2(或任何数量),则删除行