JsonConvert.DeserializeObject <t>没有考虑属性名称

时间:2018-02-19 19:02:43

标签: c# json json.net deserialization

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

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

调用反序列化方法:

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

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

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

无效json的例子,属性名称与ConnectClientResponse&#34; result&#34;匹配。财产名称:

{
    "test" : true
}

2 个答案:

答案 0 :(得分:1)

你的实际问题并不是那个类似的&#34;财产,但您的财产不是强制性的。

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

答案 1 :(得分:0)

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