com.google.gson.JsonPrimitive kann nicht umgewandelt werden, com.google.gson.JsonObject
Habe ich eine json-Liste wie diese von PHP:
$Json = '[{"test":"1", "message":"try it"},
{"test":"2", "message":"try it"}, {"test":"3", "message":"try it"} ...]';
$final = [ 'error' => '1', 'json' => json_encode($Json)];
die(json_encode($final));
Vom Android kann ich zeigen das Ergebnis wie dieses:
JsonParser jsonParser = new JsonParser();
JsonObject res = (JsonObject) jsonParser.parse(new Gson().toJson(response.body()));
Log.w("Return", response.body().toString());
Alles Prima funktioniert, bis jetzt, aber wenn ich versuche einen neuen zu machen Json Object
aus den zurückgegebenen Ergebnissen, bekomme ich diese Fehlermeldung:
com.google.gson.JsonPrimitive cannot be cast to com.google.gson.JsonObject
Hier, was ich getan habe:
JsonObject json = (JsonObject) jsonParser.parse(new Gson().toJson(res.get("json").toString()));
Log.w("JSON", json.toString());
Jedem Update bitte ?
InformationsquelleAutor Jis Maxi | 2017-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, fixieren Sie Ihre PHP.
Brauchen Sie nicht zu Kodieren eines bereits gültigen JSON-string.
Du nie benutzt
res
es. Sie druckte die Antwort Körper.Diese sieht falsch aus. Die Antwort ist bereits ein JSON-string, so
toJson
nicht notwendig werden würde.Dein Fehler ist das "JsonPrimitive" in diesem Fall ist eine Zeichenfolge, die nicht ein JSON-Objekt.
Sollten Sie lieber diese
Wenn du die Daten haben willst, dann kannst du
Alternativ, werden Sie brauchen, um ein POJO und Deserialisieren Ihre Daten-Liste.
Not a JSON Object: "com.myapp.model.User@5a1a6fc"
Gut, ein Benutzer ist nicht ein JSONObject. Meine Antwort ist, der nicht eine User-Klasse, so dass man nicht
Mein Ziel ist die Umwandlung von JSON zu JsonArray und manipulieren, wie immer die length () - ... kann ich machen, dass direkt, wie dies ohne änderung mein code:
JsonArray ress = res.get("JSON").getAsJsonArray();
, aber immer den gleichen Fehler.Ich glaube, Sie sind auf der Suche für
gson.fromJson(jsonString, User.class)
, aber das ist gelistet in der Gson-Dokumentation, wenn Sie nehmen Sie eine minute, um es zu finden und zu Lesen, obwohl einige BeispieleSind Sie mit Retrofit, durch Zufall? Wenn dem so ist, brauchen Sie nicht, um die Belegung der JSON zurück durch Gson konvertieren etwas
InformationsquelleAutor cricket_007