将Json对象转换为自定义对象

时间:2017-09-02 14:17:28

标签: c# json json.net

我有一个大量的json文件,我正在解析。但解析时我遇到了问题。 文件中有一个看起来类似的字段:

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

我将其存储为字典:

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

但有时候这个字段是空的,当它是Json.Net方法时

ToObject<MyCustomClass>()

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

1 个答案:

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