【问题标题】:Handling deserialization error处理反序列化错误
【发布时间】:2012-08-03 01:34:23
【问题描述】:

我有类要从 json 反序列化

class SeeSharp
{
   public int Number;  
}

好的json就像

{编号:1}

来自 PHP 的错误 json 是

{数字:假}

我使用以下方式处理反序列化错误http://blog.mrlacey.co.uk/2012/03/debugging-deserialization-errors-in.html

当读取 string/int/double/bool/etc 类型的成员失败时,我想将其值设置为该类型的默认值并将该错误标记为已处理。

目前,JsonSerializationSettings.Errordelegate 不允许为失败的成员设置值,并且不显示有关失败的成员类型的任何信息。

如果可以选择以另一种方式做到这一点,很高兴知道这一点。

【问题讨论】:

  • 其实我有很多类要反序列化。

标签: c# json.net


【解决方案1】:

你能用这个类吗?

public class SeeSharp
{
    public string Number
    {
        get
        {
            return _number.ToString();
        }

        set
        {
            if (!int.TryParse(value, out _number))
                _number = default(int);
        }
    }

    public int _Number { get; set; }
}

JsonConvert 将使用字符串属性Number 来设置数据,它自己处理解析。然后在您的代码中使用属性_Number 作为int

【讨论】:

  • 是的,我可以,但是我有很多这样的类和字段。以这种方式装饰它们需要时间。将是 B 计划 :)
猜你喜欢
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
相关资源
最近更新 更多