c# - Newtonsoft.Json 跳过无效对象,继续反序列化
问题描述
如何跳过/忽略/处理 Newtonsoft JSON 中的无效 json 对象?
假设我们有如下字符串:
[{
"$id": "xc1",
"sdfdsgds0sdfsadgdxc,sfgsagdfgdsfdm",
"gxcgdfs"
}, {
"$id": "2",
"Property1": "Value",
"Property2": "Value2"
}]
在做的时候
JsonConvert.DeserializeObject<T>(jsonString);
所以第一个对象无效但我想读取第二个有效对象,但我有 JsonReaderException,有没有办法实现忽略/跳过数组中的无效对象并进一步反序列化?
解决方案
我在获取序列化 JSON 字符串时使用 JsonSerializerSettings 类来确定错误。
var settings = new JsonSerializerSettings
{
Error = (obj, args) =>
{
var contextErrors = args.ErrorContext;
contextErrors.Handled = true;
}
};
var result = streamReader.ReadToEnd();
List<ViewModel> viewModel = JsonConvert.DeserializeObject<List<viewModel>>(result, settings);
推荐阅读
- c# - 可以在 C# 中从 Google Streetview 下载 360 度图像吗?
- jsf - 未调用 selectOneMenu 中的 valueChangeListener
- regex - 使用 Grok 进行模式匹配时如何考虑空值?
- python - 在用于提示用户输入的字符串内构建 FOR 循环
- php - 为什么我的代码返回多个回显字符串
- sql-server - 将 CSV 导入 SQL Server - 截断
- azure - 带有变量 source_address_prefix 的 azurerm_network_security_rule
- r - 按周对数据框进行分组,并在 R 中添加一个计算该周的方差/平均值的列
- solr - TYPO3 SolrConnection 删除了搜索,现在怎么办?
- python - Python - 单向 websocket