在Json.Net中反序列化json时忽略无效字段 [英] Ignoring an invalid field when deserializing json in Json.Net
本文介绍了在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屋!
查看全文