相关疑难解决方法(0)

如何处理 Json.Net 解析中的错误

我正在使用 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)

c# parsing json json.net

5
推荐指数
1
解决办法
4853
查看次数

在 Json.Net 中反序列化 json 时忽略无效字段

我正在尝试反序列化来自 3rd 方提供商的一些 json,偶尔它会返回一些无效的日期字段(如 -0001-01-01 或其他内容)。这会导致进程抛出异常。

有没有办法告诉 Json.Net 忽略无效的字段?

谢谢

马特

c# json json.net

1
推荐指数
1
解决办法
3288
查看次数

标签 统计

c# ×2

json ×2

json.net ×2

parsing ×1