【发布时间】:2018-07-30 01:38:08
【问题描述】:
我有一个简单的类,我想将一个 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“结果”属性名称不匹配:
{
"test" : true
}
【问题讨论】:
-
当然它们必须相同,否则它们将如何映射?您可以创建一个自定义转换器并在那里执行您的检查。
-
这是预期行为,Json.NET 将忽略未知的 JSON 属性。如果您不想这样做,请参阅Can you detect if an object you deserialized was missing a field with the JsonConvert class in Json.NET。或者,如果您想根据需要创建任何或所有 c# 属性,请参阅Json.NET require all properties on deserialization。
标签: c# json json.net deserialization