2013-10-11 2 views
0

Я новичок в java Я использую gsson json parser.I есть класс, который отправляет и получает json данные с сервера. Для разбора JSON ответ сделать:Java.Dynamic метод return type

strResult = new String(readBytes()); 
JsonIspResponse<JsonIspUtmInfo> res2; 
Type type = (Type) new TypeToken<JsonIspResponse<JsonIspUtmInfo>>() {}.getType(); 
res2 = gs.fromJson(strResult, type); 

Как в GSON документы ...

мне нужно сделать метод (GetResponse), который может сделать это:

JsonIspResponse<JsonIspUtmInfo> res2 = getResponse(request, JsonIspResponse<JsonIspUtmInfo>); 

Как может Я делаю это

+0

Какой тип 'request'? Также обратите внимание, что 'JsonIspResponse ' не будет действительным аргументом. –

+0

запрос - это просто класс, и он всегда один и тот же. Я знаю, что это не будет действительным аргументом. Я имею в виду, что он должен указать желаемый тип возвращаемого значения, но не знаю, как это сделать. – user2733961

ответ

0

я не могу проверить это прямо сейчас, но попробовать что-то вдоль этих линий:

T getResponse(String request, TypeToken<T> typeToken) { 
    return (T) gs.fromJson(request, (Type) typeToken.getType()); 
} 

// Usage 
JsonIspResponse<JsonIspUtmInfo> res2 = getResponse(request, 
    new TypeToken<JsonIspResponse<JsonIspUtmInfo>>() {}); 
+0

Спасибо, это работает) – user2733961

0

Вы принимаете сложный путь. Использование

JSONObject mJSONData = new JSONObject(); 

принимают значения по одному, как это:

data = mJSONData.optJSONObject("JSON_OBJECT_NAME"); 
+0

У меня есть много типов возвращаемых данных и правила написания для всех, не очень – user2733961