2012-04-14 7 views
14

में जेसन से शून्य गुणों को हटा रहा है मैं वस्तुओं को क्रमबद्ध कर रहा हूं और मेरी वेब सेवा से जेसन के रूप में लौट रहा हूं। हालांकि, मैं serialized जेसन से शून्य गुणों को छोड़ने की कोशिश कर रहा हूँ। क्या इसे करने का कोई तरीका है? मैं वेब एपीआई एमवीसी 4 बीटा का उपयोग कर रहा हूँ।एमवीसी वेब एपीआई 4 बीएसए

+0

वास्तव में मैं बाहर निकलने की कोशिश कर रहा हूं। – kkocabiyik

उत्तर

15

वर्तमान में एएसपी.NET वेब एपीआई (there are plans जेसन.Net का उपयोग करने के लिए अंतिम रिलीज के लिए इसे बदलने के लिए) JSON क्रमबद्ध करने के लिए डिफ़ॉल्ट रूप से DataContractJsonSerializer का उपयोग करता है।

तो आप मानक डेटाकंट्रैक्ट/डेटामेम्बर विशेषताओं के साथ क्रमबद्ध प्रक्रिया को नियंत्रित कर सकते हैं। शून्य गुणों को छोड़ने के लिए आप EmitDefaultValue को गलत पर सेट कर सकते हैं।

[DataContract] 
public class MyObjet 
{ 
    [DataMember(EmitDefaultValue = false)] 
    public string Prop1 { get; set; } 

    [DataMember(EmitDefaultValue = false)] 
    public string Prop2 { get; set; } 
} 

आप कैसे JSON प्रतिक्रियाओं क्रमानुसार लगे हुए हैं आप WebAPIContrib पैकेज है जो Json.Net का उपयोग कर formatters या JavaScriptSeralizer में बनाया शामिल उपयोग कर सकते हैं पर अधिक नियंत्रण चाहते हैं।

9

जेसन.Net में आप JsonPropertyAttribute का उपयोग NullValueHandling = NullValueHandling.Ignore के साथ कर सकते हैं। ऐसा लगता है कि पूरे वर्ग के लिए ऐसा करने का कोई तरीका नहीं है, केवल प्रत्येक वर्ग क्षेत्र/संपत्ति के लिए स्पष्टीकरण।

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 
public string SometimesNull { get; set; } 

FYI। a reasons क्यों Nson मानों के साथ डिफ़ॉल्ट serialize गुणों द्वारा Json.Net क्यों है। एक नज़र डालें, आपके मामलों पर लागू होने वाले कुछ कारण हो सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^