c# - JsonConvert.DeserializeObject<T> 不考虑属性名称

标签 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“result”属性名称不匹配:

{
    "test" : true
}

最佳答案

您的实际问题不是存在“相似”属性,而是您的属性不是强制性的。

如果您希望某些属性是强制性的,请用 JsonProperty 标记它属性,例如[JsonProperty(Required = Required.Always)]。如果空值应该有效,您也可以使用值 Required.AllowNull,只要属性名称存在即可。

关于c# - JsonConvert.DeserializeObject<T> 不考虑属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48872604/

相关文章:

c# - ICommunicationObject.State 不起作用?

c# - 在 ASP.NET MVC Controller 中进行 setter 注入(inject)时如何传递模拟对象

json - ConvertFrom-Json最大长度

android - Retrofit 2 的自定义转换器

c# - 将 JSON 反序列化为子类

c# - 如何反序列化具有不同名称的对象数组?

c# - C#如何在 Crystal 报表的一行中添加一个单词

javascript - 未捕获的语法错误 : Unexpected token - JSON character encoding

c# - 解析json文件以获取数据

c# - 通用协变和转换为 SuperType