我有一个大量的json文件,我正在解析。但解析时我遇到了问题。 文件中有一个看起来类似的字段:
"pageTitle": {
"en": "Some content here...."
},
我将其存储为字典:
[JsonProperty("pageTitle")]
public Dictionary<string, string> PageTitle { get; set; }
但有时候这个字段是空的,当它是Json.Net方法时
ToObject<MyCustomClass>()
尝试转换pageTitle时失败,因为它似乎是一个空数组而不是一个对象。是否有一个JsonPropery使它忽略这个空数组并继续?
答案 0 :(得分:0)
如果您想忽略null
值,则可以按如下方式修饰属性:
[JsonProperty("pageTitle", NullValueHandling = NullValueHandling.Ignore)]
如果要解析的JSON字符串是空数组[]或无效输入,则可能必须通过扩展抽象类JsonConverter或在Newtonsoft.Json.Converters中扩展其中一个内置转换器来编写自定义转换器并调用它为:
var obj = JsonConvert.DeserializeObject<MyCustomClass>(jsonString, new CustomConverter());
或
处理反序列化期间发生的异常,如下所示:
var obj = JsonConvert.DeserializeObject<MyCustomClass>(json, new
JsonSerializerSettings
{
Error = HandleError
});
处理程序:
private static void HandleError(object sender, ErrorEventArgs e)
{
// Get the error message using 'e.ErrorContext.Error.Message'
// e.ErrorContext.OriginalObject will give you the object/property that failed to deserialze
e.ErrorContext.Handled = true;
}