我正在使用 Json.Net 进行 Json 反序列化。有时我读取的 Json 字符串不正确(我无法修复,因为我没有生成它)。特别是,在一个特定的地方,应该有一个字符串,有时会有一个序列化的对象。毫不奇怪,Json.Net 然后抱怨在它期望一个字符串的地方找到一个对象。
我发现我可以通过使用Errorin拦截它,JsonSerializerSettings并通过设置ErrorContext.Handled. 但我还想做更多。如果我可以查看序列化对象,我就可以弄清楚字符串应该是什么,并且理论上可以提供正确的答案。在实践中,我无法弄清楚我们该怎么做。特别是,在错误处理程序中:
ErrorContext.Handled设置了解析器可以成功继续,因此它可以正确确定问题字符串的开始和结束)?[编辑] 根据要求提供一个简化示例:
我要解析的不正确的 Json 字符串:
{
"id": 2623,
"name": {
"a": 39,
"b": 0.49053320637463277,
"c": "cai5z+A=",
"name": "22"
},
"children": [
{
"id": 3742,
"name": {
"a": 37,
"b": 0.19319664789046936,
"c": "Me/KKPY=",
"name": "50"
},
"children": [
{
"id": 1551,
"name": {
"a": 47,
"b": 0.6935373953047849,
"c": "qkGkMwY=",
"name": "9"
},
"children": []
},
{
"id": 4087,
"name": {
"a": …Run Code Online (Sandbox Code Playgroud) 我正在尝试反序列化来自 3rd 方提供商的一些 json,偶尔它会返回一些无效的日期字段(如 -0001-01-01 或其他内容)。这会导致进程抛出异常。
有没有办法告诉 Json.Net 忽略无效的字段?
谢谢
马特