gpt4 book ai didi

json - 在 JSON.NET 数据解析期间忽略解析错误

转载 作者:IT老高 更新时间:2023-10-28 12:44:55 26 4
gpt4 key购买 nike

我有一个具有预定义数据结构的对象:

public class A
{
public string Id {get;set;}
public bool? Enabled {get;set;}
public int? Age {get;set;}
}

而 JSON 应该是

{ "Id": "123", "Enabled": true, "Age": 23 }

我想以积极的方式处理 JSON 错误,并且每当服务器为定义的数据类型返回意外值时,我希望它被忽略并设置默认值(null)。

现在,当 JSON 部分无效时,我会收到 JSON 阅读器异常:

{ "Id": "123", "Enabled": "NotABoolValue", "Age": 23 }

而且我根本没有得到任何东西。我想要的是得到一个对象:

new A() { Id = "123", Enabled = null, Age = 23 }

如果可能的话,解析警告。用 JSON.NET 可以实现吗?

最佳答案

为了能够处理反序列化错误,请使用以下代码:

var a = JsonConvert.DeserializeObject<A>("-- JSON STRING --", new JsonSerializerSettings
{
Error = HandleDeserializationError
});

其中HandleDeserializationError为如下方法:

public void HandleDeserializationError(object sender, ErrorEventArgs errorArgs)
{
var currentError = errorArgs.ErrorContext.Error.Message;
errorArgs.ErrorContext.Handled = true;
}

HandleDeserializationError 将被调用的次数与 json 字符串中的错误一样多。导致错误的属性不会被初始化。

关于json - 在 JSON.NET 数据解析期间忽略解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26107656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com