/ / Gson vlastné spracovanie chýb - android, gson

Gson vlastné spracovanie chýb - android, gson

Snažím sa použiť Gson knižnice na analýzu niektorých údajov json. Odpoveď zo servera môže byť:

výsledok úspechu:

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

výsledok chyby:

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

Vyzerá to, že Gson dokáže spracovať iba jeden typ návratu, napríklad niečo ako toto:

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

Ako môžem správne analyzovať údaje / (chyby) z informačného kanála pomocou služby Gson a nie len vynechať analýzu JSON?

odpovede:

2 pre odpoveď č. 1

Pretože neviete, čo to budedostať to "je naozaj ťažké použiť niečo ako Gson a deserialize na POJO. Vy" re skutočne dostať objekt buď "myObject" alebo "chyba" pole. Jedným z prístupov je jednoducho vytvoriť komplexný objekt. Gson nastaví všetky polia, ktoré nie sú prítomné null keď analyzujete JSON, tak niečo také bude fungovať dobre:

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 pre odpoveď č. 2

Ďakujeme @Brian. Skončil som len takú analýzu

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

a potom skontrolovať, či bol prítomný chybový uzol, takže som mohol hodiť výnimku pre server. Ak uzol nebol prítomný, potom som odtiaľ použil Gsona.

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