在Json.Net中反序列化json时忽略无效字段 [英] Ignoring an invalid field when deserializing json in Json.Net

查看:462
本文介绍了在Json.Net中反序列化json时忽略无效字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试反序列化来自第三方供应商的一些json,有时它会返回一些无效的日期字段(例如-0001-01-01之类).这将导致该过程引发异常.

I'm trying to deserialize some json from a 3rd party provider, and occasionally it returns some invalid date field (like -0001-01-01 or something). This causes the process to throw an exception.

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

Is there a way to tell Json.Net to ignore fields that are invalid?

谢谢

马特

推荐答案

要扩展David的答案,我使用了一个自定义的DateTime转换器:

To expand on the answer from David, I have used a custom DateTime converter:

public class SafeDateTimeConvertor : DateTimeConverterBase
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        DateTime result;
        if (DateTime.TryParse(reader.Value.ToString(), out result))
            return result;
        return existingValue;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteValue(((DateTime)value).ToString("yyyy-MM-dd hh:mm:ss"));
    }
}

然后将其应用如下:

var result = JsonConvert.DeserializeObject<TestClass>(json, new SafeDateTimeConvertor());

这篇关于在Json.Net中反序列化json时忽略无效字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆