जीसन कस्टम त्रुटि हैंडलिंग - एंड्रॉइड, जीसन

मैं इसका उपयोग करने की कोशिश कर रहा हूँ Gson कुछ जोंस डेटा पार्स करने के लिए पुस्तकालय। सर्वर से प्रतिक्रिया इनमें से कोई भी हो सकती है:

सफलता का परिणाम:

{myObject: {foo:"1", bar:"bleh"}}

गलती का परिणाम:

{error: {message:"invalid token", code:320} }

ऐसा लगता है कि Gson केवल एक वापसी प्रकार को संभाल सकता है, जैसे कि कुछ इस तरह से:

Gson gson = new Gson();
MyObject object = gson.fromJson(value, MyObject.class);

मैं कैसे Gson का उपयोग करके फ़ीड से डेटा / (त्रुटि) को ठीक से पार्स कर सकता हूं और न ही JSON को स्वयं को फ्लैट कर सकता हूं?

उत्तर:

जवाब के लिए 2 № 1

क्योंकि आप नहीं जानते कि आप क्या करने जा रहे हैंयह वास्तव में Gson जैसी किसी चीज़ का उपयोग करने और एक POJO को deserialize करने के लिए वास्तव में कठिन है। आप वास्तव में एक "myObject" या "त्रुटि" फ़ील्ड के साथ एक ऑब्जेक्ट प्राप्त कर रहे हैं। एक दृष्टिकोण बस एक व्यापक वस्तु बनाना है। किसी भी क्षेत्र में मौजूद नहीं है Gson सेट करता है null JSON को पार्स करते समय ऐसा कुछ ठीक काम करेगा:

class JSONResponse {
private MyObject myObject;
private Error error;

static class MyObject {
String foo;
String bar;
}

static class Error {
String message;
int code;
}

public boolean isError() {
return error != null;
}

// Getters that access the fields of the objects
// ...
}

जवाब के लिए 0 № 2

धन्यवाद @Brian मैं इस तरह बस पार्सिंग खत्म कर दिया

JsonParser parser = new JsonParser();
parser.parse(value).getAsJsonObject();

और फिर जाँच करना कि क्या त्रुटि नोड मौजूद था तो मैं सर्वर अपवाद को फेंक सकता था। यदि नोड उपस्थित नहीं था, तो मैंने वहां से Gson का उपयोग किया।

Gson gson = new GsonBuilder().create();
ArrayList<GridItemVo> list = gson.fromJson(value, new TypeToken<ArrayList<GridItemVo>>(){}.getType());