我正在使用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字符串中指定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
。