Я получаю JSON от вызова Java, и я хочу проанализировать его на объект с свойством «info», который изменит тип в соответствии с тем, кто сделал вызов.Pass Type to method and alter response
public <T> ExternalCallBaseResult<T> parseExternalResultJson(String res)
{
Type collectionType = new TypeToken<ExternalCallBaseResult<T>>(){}.getType();
return Global.gson.fromJson(res, collectionType);
}
Я хотел бы назвать этот метод так:
ExternalCallBaseResult<GetUserInfoResult_Info> result = global.parseExternalResultJson(res);
Учитывая класс:
public static class ExternalCallBaseResult<T>
{
public int callbackid = 0;
public int success = 1;
public T info = null;
}
Я получаю сообщение об ошибке:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.cht.params.Params$GetUserInfoResult_Info
EDIT : Я видел это вопрос с ответом: gson: parametrized fromJson depending on the Type Но разве нет способа сделать, не отправляя TypeToken при вызове метода?
Вы пробовали с помощью класса > типа? – user2717954
Вы имеете в виду передачу второго параметра, например «Класс genericType '? –
Animaleante
да что-то в этом роде, тогда используйте класс # cast – user2717954