码迷,mamicode.com
首页 > Web开发 > 详细

JSON 序列化的时候忽略无效的属性值

时间:2019-02-02 10:16:39      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:.net core   异常   sha   convert   数据   数值   .config   col   settings   

例如我拥有以下代码。

public class NewObject
{
    public int? TestValue { get; set; }

    public int? Age { get; set; }
}

当我为 TestValue 属性传入一个非法数据的时候,在使用 JSON.NET 进行反序列化时会抛出异常。例如我通过以下代码对一个字符串进行反序列化,如果不出意外的话会提示无效参数值的异常。

var newValue = JsonConvert.DeserializeObject<NewObject>(@"{""TestValue"":""FFFF"",""Age"":15}",settings);

通过 Stackoverflow 查询得知,可以通过在反序列化时指定 JsonSerializerSettings 对象进行忽略。

var settings = new JsonSerializerSettings
{
    Error = (obj, args2) =>
    {
        args2.ErrorContext.Handled = true;
    }
};

var newValue = JsonConvert.DeserializeObject<NewObject>(@"{""TestValue"":""FFFF"",""Age"":15}",settings);

这样,在进行反序列化的时候就可以忽略 TestValue 的无效值,为其属性设置为 null,并且成功解析 Age 的值。

如果你是 ASP.NET Core 的程序,可以通过 IServiceCollectionConfigure<T>() 方法来配置 Error 的处理器。

services.Configure<MvcJsonOptions>(jsonOptions =>
{
    // 忽略转换过程中的异常信息
    jsonOptions.SerializerSettings.Error += (sender, args) => { args.ErrorContext.Handled = true; };
});

JSON 序列化的时候忽略无效的属性值

标签:.net core   异常   sha   convert   数据   数值   .config   col   settings   

原文地址:https://www.cnblogs.com/myzony/p/10347652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!