#android
#Android
Вопрос:
private void loadFromAndToPlaceValues() {
String str = loadJSONFromAsset();
this.places = (List)new Gson().fromJson(str, newTypeToken<List<BusEntity>>().getType());
if (this.places != null amp;amp; this.places.size() > 0) {
this.places_array = new String[this.places.size()];
for (int i = 0; i < this.places_array.length; i ) {
this.places_array[i] = ((BusEntity) this.places.get(i)).getValue();
}
}
}
Комментарии:
1. пожалуйста, добавьте вопрос о регистрации. также правильное описание.
Ответ №1:
Вы пропустили {}
фигурные скобки. Измените его следующим образом.
this.places = (List)new Gson().fromJson(str, new TypeToken<List<BusEntity>>(){}.getType());
С другой стороны, вопрос должен быть более конструктивным и описательным. Публикация простого кода, вероятно, в большинстве случаев не даст хорошего ответа.
Ответ №2:
Это может помочь вам :
Вариант 1 — самостоятельно внедрите java.lang.reflect.ParameterizedType и передайте его в Gson.
private static class ListParameterizedType implements ParameterizedType {
private Type type;
private ListParameterizedType(Type type) {
this.type = type;
}
@Override
public Type[] getActualTypeArguments() {
return new Type[] {type};
}
@Override
public Type getRawType() {
return ArrayList.class;
}
@Override
public Type getOwnerType() {
return null;
}
// implement equals method too! (as per javadoc)
}
Тогда просто:
Type type = new ListParameterizedType(clazz);
List<T> list = gson.fromJson(json, type);
Это тоже будет работать, по крайней мере, с Gson 2.2.4.
Type type = com.google.gson.internal.$Gson$Types.newParameterizedTypeWithOwner(null, ArrayList.class, clazz);