2016-08-24 6 views
7

दस्तावेज़ों का कहना है कि JsonObject#get विधि कोई शून्य मौजूद नहीं है, तो कोई भी सदस्य मौजूद नहीं है। यह सटीक नहीं है; कभी-कभी JsonNull ऑब्जेक्ट null के बजाय वापस लौटा दिया जाता है।जीएसओएन में जेसन नूल क्यों?

यह जांचने के लिए मुहावरे क्या है कि जीएसओएन में कोई विशेष क्षेत्र मौजूद है या नहीं?

jsonElement = jsonObject.get("optional_field"); 
if (jsonElement != null && !jsonElement.isJsonNull()) { 
    s = jsonElement .getAsString(); 
} 

क्यों GSON JsonNull बजाय null का उपयोग किया था: मैं इस भद्दा शैली से बचने के लिए करना चाहते हैं?

what के लिए उत्तर null और JsonNull के बीच अंतर है। उपरोक्त मेरे प्रश्न में, मैं कारणों की तलाश में हूं।

उत्तर

6

संभवतः, एक मूल्य की अनुपस्थिति और JSON में JSON value null की उपस्थिति के बीच अंतर का मॉडल करना चाहता था। उदाहरण के लिए, इन दो JSON के बीच एक अंतर के टुकड़े

{} 
{"key":null} 

आपके आवेदन उन्हें एक ही विचार हो सकता है, लेकिन JSON प्रारूप नहीं है।

JsonObject jsonObject = new JsonObject(); // {} 
jsonObject.get("key"); 

कॉलिंग रिटर्न जावा मूल्य null क्योंकि कोई भी सदस्य उस नाम से मौजूद है।

JsonObject jsonObject = new JsonObject(); 
jsonObject.add("key", JsonNull.INSTANCE /* or even null */); // {"key":null} 
jsonObject.get("key"); 

कॉलिंग प्रकार JsonNull (सिंगलटन JsonNull.INSTANCE द्वारा संदर्भित) का एक उदाहरण देता है क्योंकि एक सदस्य है कि नाम के साथ मौजूद है और अपने मूल्य JSON अशक्त, JsonNull मूल्य का प्रतिनिधित्व करती है।

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