2011-09-19 18 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 भी कुछ आइटम संपत्ति की जरूरत नहीं है के माध्यम से किया जा सकता है deserialized "आईएसडी निम्नलिखित के रूप में एक वर्ग मिल गया "json स्ट्रिंग में, मैं उस प्रकार के एक डिफ़ॉल्ट मान भर जाएगी उम्मीद करता है, तो मौजूद नहीं, उदाहरण के लिए, IsSelected अंतिम आइटम

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

किसी भी विचार को छोड़कर झूठी मैं यह कैसे प्राप्त कर सकते हैं होना चाहिए होगा?

उत्तर

7

आप अपने JSON स्ट्रिंग में eId निर्दिष्ट नहीं कर रहे हैं, और यह आवश्यक होने के लिए सेट है। आप rId पास कर रहे हैं ... क्या यह वही बात है?

यदि मुझे प्रश्न समझ में नहीं आ रहा है, तो कृपया मुझे बताएं और मैं अपना उत्तर अपडेट करूंगा।

अद्यतन: आप का संकेत कर रहे हैं कि iSd संपत्ति AllowNull है। आपको अभी भी अपने JSON स्ट्रिंग में इस प्रॉपर्टी के लिए एक मान निर्दिष्ट करना होगा, लेकिन यह शून्य हो सकता है। JSON.NET specs प्रति:

संपत्ति JSON में परिभाषित की जानी चाहिए लेकिन यह शून्य मान हो सकती है।

आप DefaultValue के रूप में अपने JsonProperty विशेषता में iSd निशान iSd के लिए एक मूल्य निर्दिष्ट करने के लिए ... या की जरूरत है। DefaultValue के लिए, spec का कहना है:

संपत्ति की आवश्यकता नहीं है। डिफ़ॉल्ट स्थिति।

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

मुझे आशा है कि इस मदद करता है।

+0

खेद है कि मैंने चिपकाए जाने पर गलती की है .. मैंने अपना प्रश्न अपडेट किया है – Ming

+0

मैंने अपना जवाब अपडेट किया। –

+0

कुछ जेसन स्ट्रिंग्स में संपत्ति नहीं है क्योंकि संपत्ति वैकल्पिक है .. कैसे कक्षा को एक जेसन स्ट्रिंग को स्वीकार करने के लिए कर सकते हैं जिसमें कुछ संपत्ति मूल्य नहीं है? – Ming

1

संपत्ति को boolstring पर बनाएं।

+0

खेद है कि मैंने अपनी कक्षा की प्रतिलिपि बनाते समय गलती की है, मैंने अपना प्रश्न अपडेट किया है – Ming