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ď č. 1Pretož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());