我從使用JSON字符串獲取對象時遇到了一些問題。com.google.gson.internal.LinkedTreeMap無法投射到我的課堂
我得到了類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);
}
}
從我的服務器我在JSON字符串表示得到一個ArrayList<Product>
。例如:
[{"mBarcode":"123","mName":"Apfel","mPrice":"2.7"},
{"mBarcode":"456","mName":"Pfirsich","mPrice":"1.1111"},
{"mBarcode":"89325982","mName":"Birne","mPrice":"1.5555"}]
此字符串是這樣產生的:
爲了讓我的對象後,我用這個函數:
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不能轉換爲object.Product
我在做什麼錯了?它看起來像創建了LinkedTreeMaps列表,但我如何將它們轉換爲我的產品對象?
這個答案提供了一個解決辦法,但是沒有解決嵌套泛型的問題。請參閱這兩個答案以獲得更一般的解決方案: http://stackoverflow.com/a/14506181/4745878 http://stackoverflow.com/a/26203635/4745878 – 2016-04-01 21:26:20
此解決方法比真正的解決方案更好。謝謝亞歷克西斯C. – pcejrowski 2016-11-13 18:54:46