2017-09-02 76 views
1

我有一个庞大的json文件,我解析。但是,解析它时遇到问题。 有看起来类似文件中的字段:将Json对象转换成自定义对象

"pageTitle": { 
"en": "Some content here...." 
}, 

我店这是一本字典:

[JsonProperty("pageTitle")] 
    public Dictionary<string, string> PageTitle { get; set; } 

但有时该字段为空,而当它是Json.Net方法

ToObject<MyCustomClass>() 

尝试转换pageTitle时失败,因为它看起来是空数组而不是对象。是否有JsonPropery使它忽略这个空阵列并继续?

回答

0

如果希望忽略null值,那么很可能如下来装饰属性:

[JsonProperty("pageTitle", NullValueHandling = NullValueHandling.Ignore)] 

如果JSON字符串被解析为空数组[]或无效的输入,则可能通过扩展抽象类,JsonConverter或延长在Newtonsoft.Json.Converters内置的转换器之一编写自定义转换器和调用它:

var obj = JsonConvert.DeserializeObject<MyCustomClass>(jsonString, new CustomConverter()); 

OR

拉手如下反序列化过程中发生异常:

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; 
    }