首页 > 解决方案 > 如何轻松确定 JsonConvert.DeserializeObject() 是否在我的对象中找到并设置每个属性?

问题描述

我正在使用 json.net 包对文件进行序列化/反序列化设置。我想要一种方法来确保当我反序列化时,在我的类中的每个属性的 json 字符串中找到一个值。如果发现不是类成员的属性,有一种方法可以让 json.net 抛出异常,但反之则不然。例如:

public class Params
{
    public double ReqPress = 5.0;
    public double LaserTransmission = 0.0;
    public int LaserShotCount = 1;

    public override string ToString()
    {
        return JsonConvert.SerializeObject(this, Formatting.Indented);
    }
    public static OperationalParams FromString(string jsonData)
    {
        var s = new JsonSerializerSettings();
        s.MissingMemberHandling = MissingMemberHandling.Error; 
        return JsonConvert.DeserializeObject<OperationalParams>(jsonData, s);
    }
}

如果我打电话

OperationalParams.FromString("{ ReqPress : 5.0, LaserTransmission : 0.0 }"), 

然后我想得到一个错误,告诉我 LaserShotCount 丢失并且没有从 json 数据中初始化。理想情况下,如果缺少一个或多个成员,JsonConvert.DeserializeObject 会抛出异常,但这似乎不受支持。还有另一种方法可以做到这一点吗?

标签: json.net

解决方案


推荐阅读