У меня есть некоторые проблемы с получением моего объекта из строки JSON.
Я получил класс Product
public class Product {
private String mBarcode;
private String mName;
private String mPrice;
public Product(String barcode, String name, String price) {
mBarcode = barcode;
mName = name;
mPrice = price;
}
public int getBarcode() {
return Integer.parseInt(mBarcode);
}
public String getName() {
return mName;
}
public double getPrice() {
return Double.parseDouble(mPrice);
}
}
На моем сервере я получаю ArrayList<Product>
в представлении JSON String. Например:
[{"mBarcode":"123","mName":"Apfel","mPrice":"2.7"},
{"mBarcode":"456","mName":"Pfirsich","mPrice":"1.1111"},
{"mBarcode":"89325982","mName":"Birne","mPrice":"1.5555"}]
Эта строка создается следующим образом:
public static <T> String arrayToString(ArrayList<T> list) {
Gson g = new Gson();
return g.toJson(list);
}
Чтобы вернуть мой объект, я использую эту функцию:
public static <T> ArrayList<T> stringToArray(String s) {
Gson g = new Gson();
Type listType = new TypeToken<ArrayList<T>>(){}.getType();
ArrayList<T> list = g.fromJson(s, listType);
return list;
}
Но при вызове
String name = Util.stringToArray(message).get(i).getName();
Я получаю ошибку com.google.gson.internal.LinkedTreeMap нельзя передать объекту. Продукт
Что я делаю неправильно? Похоже, что он создал список LinkedTreeMaps, но как я могу преобразовать их в свой объект продукта?