java - Gson, auto-initialize and avoid null exceptions -


जब एक json को एक class Foo {int id; सूची के & lt; स्ट्रिंग & gt; आइटम; सूची के & lt; लांग & gt; तिथियों;} मैं deserialization के बाद रिक्त फ़ील्ड कैसे स्वत: प्रारंभ कर सकता हूं ? वहाँ Gson lib साथ इस तरह के एक possiblity है

उदाहरण के लिए:

  फू foo = नए Gson () fromJson ( "{\" id \। ": \" परीक्षण \ ", \" आइटम \ ": [1234, 1235, 1336]}", Foo.class) foo.dates.size (); - & gt; 0 और नहीं अशक्त pointerException   

मैं जानता हूँ कि मैं कर सकता है, तो (foo.attr == नल) foo.attr = ...
लेकिन मैं अधिक सामान्य कोड के लिए देख रहा हूँ,

div>

आप अपने कस्टम deserializer बनाना होगा।

यह मानते हुए अपने वर्ग कहा जाता है MyAwesomeClass , आप कुछ की तरह कार्यान्वित

  MyAwesomeClassDeserializer लागू करता है JsonDeserializer & lt; MyAwesomeClass & gt; {@Override सार्वजनिक MyAwesomeClass deserialize (JsonElement json, प्रकार typeOfT, JsonDeserializationContext ctx) फेंकता JsonParseException {// TODO: यहाँ अपने अशक्त-जादू करते हैं}   

और GSON से पंजीकृत करें, इस तरह:

  gson gson = नए GsonBuilder () .registerTypeAdapter (MyAwesomeClass.class, नई MyAwesomeClassDeserializer ()) .create ();   

अब, आप सिर्फ एक fromJson (स्ट्रिंग, TypeToken) विधि, अपने deserialized वस्तु प्राप्त करने के लिए।

  MyAweSomeClass उदाहरण फोन = जीएसएन.फ्रेम जेसन (जेएसन, नए टाइपटोकन & lt; MyAwesomeClass & gt; () {}। GetType ());    

Comments