2011-09-19 68 views
6

我使用Json.net没有发现,我有一个类如下json.net所需的属性在JSON

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应该是除了最后一项

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

任何想法假我怎样才能做到这一点?

回答

7

你没有在你的JSON字符串中指定eId,并且它被设置为必需的。你通过rId ......这是一回事吗?

如果我不理解这个问题,请让我知道,我会更新我的答案。

UPDATE: 你表明iSd属性是AllowNull。您仍然必须在您的JSON字符串中为此属性指定一个值,但它可以为null。根据JSON.NET specs

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

需要为iSd指定值...或者你JsonProperty属性为DefaultValue标记iSd。对于DefaultValuespec说:

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

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

我希望这有助于。

+0

对不起,我复制粘贴时发生错误..我更新了我的问题 – Ming

+0

我更新了我的答案。 –

+0

一些json字符串没有该属性,因为该属性是可选的..如何让类接受一个没有特定属性值的json字符串? – Ming

1

使财产a bool不是string

+0

对不起,我复制我的课时犯了错误,我更新了我的问题 – Ming