代码之家  ›  专栏  ›  技术社区  ›  Valsov

JsonConvert。反序列化对象不考虑属性名称[重复]

  •  1
  • Valsov  · 技术社区  · 7 年前

    我有一个简单的类,我想将json字符串反序列化为:

    public class ConnectClientResponse
    {
        public bool result { get; set; }
    }
    

    调用反序列化方法:

    try
    {
        var response = JsonConvert.DeserializeObject<ConnectClientResponse>(jsonString);
    }
    catch (JsonSerializationException)
    {
        // Exception should be thrown
    }
    

    问题是,当json字符串的形式与ConnectClientResponse类相同,但属性名称不同时,不会引发异常。

    这是正常行为吗?如果是,如何检查属性名称是否相同?

    {
        "test" : true
    }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Wormbo    7 年前

    你的实际问题不是有一个“相似”的属性,而是你的属性不是强制性的。

    如果希望某些属性是必需的,请将其标记为 JsonProperty 属性,例如。 [JsonProperty(Required = Required.Always)] . 也可以使用该值 Required.AllowNull 相反,如果null值应该有效,只要属性名称存在。

        2
  •  1
  •   driis    7 年前

    您可以在JsonSerializerSettings上使用MissingMemberHandling来控制这种行为。 https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_MissingMemberHandling.htm