我有一个简单的类,我想将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
}
答案 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