2012-03-24 14 views
3

Ich habe Probleme beim Parsen meiner JSON, die ich von Javascript bekomme. Das Format JSON ist dies:Parsen von JSON-Array mit Gson

[{"positions":[{"x":50,"y":50},{"x":82,"y":50},{"x":114,"y":50},{"x":146,"y":50}]},{"positions":[{"x":210,"y":50},{"x":242,"y":50},{"x":274,"y":50}]}] 

Bisher ich in der Lage gewesen, so weit zu kommen:

{"positions":[{"x":50,"y":50},{"x":82,"y":50},{"x":114,"y":50},{"x":146,"y":50}]} 

Aber ich brauche auch jetzt eine Klasse mit diesen Positionen erstellen. Ich habe nicht an der Klasse gearbeitet, da ich zuerst versuchte, die Ausgabe auszudrucken, aber ich bin nicht in der Lage, sie weiter zu reduzieren. Ich erhalte diese Fehlermeldung:

java.lang.IllegalStateException: Dies ist kein JSON-Array.

Und mein Code ist dies:

JsonParser parser = new JsonParser(); 
    String ships = request.getParameter("JSONships"); 
    JsonArray array = parser.parse(ships).getAsJsonArray(); 

    System.out.println(array.get(0).toString()); 
    JsonArray array2 = parser.parse(array.get(0).toString()).getAsJsonArray(); 
    System.out.println(array2.get(0).toString()); 

Ich habe auch versucht, es auf diese Weise zu tun:

Gson gson = new Gson() ; 
    String lol = (gson.fromJson(array.get(0), String.class)); 
    System.out.println(lol); 

In diesem Fall erhalte ich:

com.google.gson. JsonSyntaxException: java.lang.IllegalStateException: Erwartete STRING aber war BEGIN_OBJECT

Am Ende, iw ant auf Durchschleifen von Positionen, Erstellen von Klasse für jede "Positionen", die eine Liste mit einer anderen Klasse Position enthält, die das int x, y hat.

Vielen Dank für Ihre Zeit.

Antwort

8

Ihre Klassen definieren, und Sie werden alles bekommen, was Sie brauchen mit Gson:

public class Class1 { 
    private int x; 
    private List<Class2> elements; 
} 

und die innere Klasse:

public class Class2 { 
    private String str1; 
    private Integer int2; 
} 

Jetzt können Sie einen JSON-String der äußeren Klasse analysieren einfach so :

gson.fromJson(jsonString, Class1.class); 

Ihre Fehler beim Gson ist, dass Sie versuchen, ein komplexes Objekt inzu analysieren, was nicht möglich ist.

+0

Vielen Dank. Ich hätte nie gedacht, dass es so einfach wäre und ich weiß nicht einmal, was ich mit der Saite machen wollte. Du bist mein Held – user1047833

+0

Hallo ist es möglich, eine komplexe JSON-Zeichenfolge zu analysieren, die in PHP mit gemischten Datentypen erstellt wurde, ohne innere Klassen zu erstellen. Eigentlich ist unsere API in PHP geschrieben und wir verwenden diese API über eine Java App. – sumit

+0

@sumit: Wie wollen Sie die JSON-Zeichenfolge konsumieren? Während JSON das Objektformat in PHP/Javascript ist, wie würden Sie auf die Eigenschaften in Java zugreifen? –

Verwandte Themen