Страницы

Поиск по вопросам

суббота, 27 октября 2018 г.

Обобщенный JSON

Сервер присылает ответы в формате
{response: {.......}}
например
{response: {code: 0}} {response: {type: "test"}}
Пытаюсь сделать парсинг при помощи библиотеки gson в таком виде
class Response { private T response; public T getResponse() { return response; } }
class CodeInfo { private int code; }
class TypeInfo { private String type; }
T parse(String str) { Response resp = gson.fromJson(str, Response.class); return resp.getResponse(); }
CodeInfo = parse("{response: {code: 0}}");
Внутренние классы довольно обширные
На конструкции Response.class компилятор меня посылает. Решается ли задача без кучи наследников Response? В принципе, могу даже сменить парсер


Ответ

Спасибо @diraria за направление на путь истинный. Итого получилось
public T parse(String str, Class AClass) { Response resp = JSON.fromJson( str, TypeToken.getParameterized(Response.class, AClass).getType() ); return resp.getResponse(); }
CodeInfo info = parse("{response: {code: 0}}", CodeInfo.class)
Если писать так
public T parse(String str) { Response resp = JSON.fromJson( str, new TypeToken>(){}.getType() ); return resp.getResponse(); }
то строка парсится, но resp.getResponse() возвращает объект класса com.google.gson.internal.LinkedTreeMap

Комментариев нет:

Отправить комментарий