2012-12-17 11 views
21

मुझे लगता है कि मुझे यह पता चलता है कि एनएसजेएसओएसएरियलाइजेशन का उपयोग कैसे करें। कॉल मैं बनाने रहा है:NSJSONSerialization के माध्यम से JSON में शून्य मान कैसे शामिल करें?

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error] 

जहां मापदंडों एक NSDictionary जो कुंजी और मूल्यों शामिल JSON अनुरोध में उपयोग करने के लिए है। सब कुछ ठीक है और सब कुछ, जब तक मुझे खाली स्ट्रिंग के बजाय शून्य का उपयोग करना है। मुझे मूल्य को शून्य पर सेट करने का कोई तरीका नहीं मिल रहा है। json है कि मैं बनाने की जरूरत का उदाहरण है:

{"target" 
    {"firstname":<firstname>, 
    "lastname":<lastname>}, 
"error":null 
} 

रास्ता सर्वर सेटअप है कि यह या तो या एक स्ट्रिंग के रूप में कोई त्रुटि एक अशक्त कोई त्रुटि है, तो उम्मीद है है।

कोई विचार? क्या मुझे एपीआई कॉल या ऐसा कुछ याद आ रहा है?

धन्यवाद!

उत्तर

51

आपको NSNull का उपयोग करना होगा।

न तो एक चाबी है और न ही एक मूल्य नहीं के बराबर हो सकता है: उदाहरण के

स्विफ्ट

let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()] 

ऑब्जेक्टिव-सी

NSDictionary *dict = @{ @"error": [NSNull null] }; 

NSDictionary की आधिकारिक दस्तावेज से के लिए ; यदि आपको किसी शब्दकोश में शून्य मान का प्रतिनिधित्व करने की आवश्यकता है, तो आपको NSNull का उपयोग करना चाहिए।

-3

बस कुछ इस तरह का प्रयास करें:

NSDictionary *jsonObj = [NSDictionary dictionaryWithObjectsAndKeys:@"My Name", @"name", @"Developer", @"occupation", NULL, @"My NULL field", nil]; 

और पैरामीटर के रूप में इस वस्तु का उपयोग आप जहां चाहें।

+0

[NSNull शून्य], न्यूल नहीं। – gnasher729

+0

आप एनएस डिक्शनरी में शून्य मान नहीं डाल सकते – Climbatize

0

यदि आप स्विफ्ट JSON का उपयोग कर रहे हैं, तो मैंने अभी a PR बनाया है जो शून्य को संभालना चाहिए। यह अभी तक विलय नहीं हुआ है और कुछ सुधारों की आवश्यकता हो सकती है। part जो वर्णन करता है कि यह कैसे करना है, यदि आपको आवश्यकता हो तो अपना खुद का कार्यान्वयन लिखना अच्छी शुरुआत होनी चाहिए। तर्क जटिल नहीं है लेकिन इसके बारे में सोचने के लिए मुश्किल किनारे के मामलों/प्रदर्शन चीजें हो सकती हैं।

मुझे पता है कि यह NSJSONSerialization को प्रतिस्थापित करने के बाद से इस सवाल का सीधा जवाब नहीं है, लेकिन मुझे आशा है कि इससे कुछ लोगों को निराश किया जा सकता है कि स्विफ्ट कैसे नील/जेसन हैंडल करता है!

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