2011-09-19 49 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