Ich habe Probleme mit dem Abrufen eines Objekts aus einer JSON-Zeichenfolge.com.google.gson.internal.LinkedTreeMap kann nicht in meine Klasse umgewandelt werden
bekam ich die Klasse 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);
}
}
Von meinem Server ich eine ArrayList<Product>
in JSON String-Darstellung erhalten. Zum Beispiel:
[{"mBarcode":"123","mName":"Apfel","mPrice":"2.7"},
{"mBarcode":"456","mName":"Pfirsich","mPrice":"1.1111"},
{"mBarcode":"89325982","mName":"Birne","mPrice":"1.5555"}]
Dieser String wird wie folgt generiert:
public static <T> String arrayToString(ArrayList<T> list) {
Gson g = new Gson();
return g.toJson(list);
}
Zu meinem Objekt wieder verwende ich diese Funktion:
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;
}
Aber wenn Sie anrufen
String name = Util.stringToArray(message).get(i).getName();
Ich bekomme den Fehler com.google.gson.internal.LinkedTreeMap kann nicht in Objekt umgewandelt werden.Produkt
Was mache ich falsch? Es sieht so aus, als hätte es eine Liste von LinkedTreeMaps erstellt, aber wie konvertiere ich diese in mein Product Object?
Diese Antwort liefert eine Abhilfe, aber nicht das Problem der verschachtelten Generika adressieren. Siehe diese zwei Antworten für eine allgemeinere Lösung: http://stackoverflow.com/a/14506181/4745878 http://stackoverflow.com/a/26203635/4745878 –
Diese Problemumgehung ist besser als echte Lösung. Danke Alexis C. – pcejrowski