json中找不到json.net必需的属性

本文关键字:json 属性 net 找不到 | 更新日期: 2023-09-27 18:08:56

我正在使用Json.net,我得到了如下所示的类

public class RecordAlias
    {   
        [JsonProperty(PropertyName = "eId", Required = Required.Always)]
        public string EntityId { get; set; }
        [JsonProperty(PropertyName = "aId", Required = Required.AllowNull)]
        public string AliasId { get; set; }
        [JsonProperty(PropertyName = "iSd", Required = Required.AllowNull)]
        public bool IsSelected { get; set; }
    }

因此,即使某些项目在json字符串中没有属性"iSd",也可以反序列化以下json,我希望如果不存在,则应该填充该类型的默认值,例如,除了最后一个项目之外,IsSelected应该为false

      [{
        "eId" : "30022004",
        "aId" : "1"
    }, {
        "eId" : "30021841",
        "aId" : "1"
    }, {
        "eId" : "30021848",
        "aId" : "1"
        "iSd" : true
    }
]

知道我该如何做到这一点吗?

json中找不到json.net必需的属性

您没有在JSON字符串中指定eId,而是将其设置为必需。你正在通过rId。。。这是同一件事吗?

如果我不理解这个问题,请告诉我,我会更新我的答案。

更新:您指示iSd属性为AllowNull。您仍然需要在JSON字符串中为此属性指定一个值,但它可以为null。根据JSON.NET规范:

该属性必须在JSON中定义,但可以是null值。

您需要为iSd指定一个值。。。或在JsonProperty属性中将iSd标记为DefaultValue。对于DefaultValue,规范上写着:

该属性不是必需的。默认状态。

[JsonProperty(PropertyName = "iSd", Required = Required.Default)]
public bool IsSelected { get; set; }

我希望这能有所帮助。

我根据Required文档为Required枚举值及其效果制作了一个小表格:

选项 必须存在 可以为Null值
Required.Default
Required.AllowNull
Required.Always
Required.DisallowNull

使属性成为bool,而不是string