List <Type>и java.lang.ClassCastException: com.google.gson.internal.StringMap - PullRequest
0 голосов
/ 19 ноября 2018

ниже моей функции,

public <T> List<T> jsonToListBean(String json, Class<T> clazz) {
    Gson gson = new Gson();     
    Type listType = new TypeToken<List<T>>(){}.getType();       
    List<T> returnValue = gson.fromJson(json, listType);
    return returnValue;
}

но система возвращает это исключение:

java.lang.ClassCastException: com.google.gson.internal.StringMap

Я также заметил, что если я использую следующий код строки

Type listType = new TypeToken<ArrayList<ShapeBean>>(){}.getType();

это работает, но моя цель - сделать все возможное, чтобы сделать мой код более эффективным.

Как мне изменить свой код, чтобы сделать его пригодным для использования, также передавая тип "T" вместо "ShapeBean"?

1 Ответ

0 голосов
/ 20 ноября 2018

решаемая.Благодаря ссылке Кан под кодом:

public <T> List<T> listEntity(String jsonCommand, Class<T> clazz) {

    List<T> lst =  new ArrayList<T>();
    try {
        // Consuming remote method
        JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(jsonCommand).getAsJsonArray();

        for(final JsonElement json: array){
            Gson g = new Gson();
            T entity = g.fromJson(json, clazz);
            lst.add(entity);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } return lst;
}

проверьте также: Gson TypeToken с динамическим типом элемента ArrayList

...