2014-12-23 29 views
7

Ich brauche eine JSON-Datei wich das sieht aus wie zu analysieren:JSON Array zu Java-Objekte

[ 
    { 
    "y": 148, 
    "x": 155 
    }, 
    { 
    "y": 135, 
    "x": 148 
    }, 
    { 
    "y": 148, 
    "x": 154 
    } 
] 

Und ich will diese X-Koordinaten setzen und Y-Koordinaten in ein Javaobject Klick, diese Klasse sieht wie folgt aus :

public class Click { 
    int x; 
    int y; 


    public Click(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 

    public int getX() { 
     return x; 
    } 

    public void setX(int x) { 
     this.x = x; 
    } 

    public int getY() { 
     return y; 
    } 

    public void setY(int y) { 
     this.y = y; 
    } 
} 

ich habe bei Gson sah, weil sie sagen, es ist einfach zu beenden, aber ich nicht es bekommen, wie ich es aus meiner Datei tun.

+0

'[]' ein Array ist, '{}' ist ein Objekt. –

Antwort

13

Ihre json String-Daten unter der Annahme in Variablen gespeichert ist jsonStr genannt:

String jsonStr = getJsonFromSomewhere(); 
Gson gson = new Gson(); 
Click clicks[] = gson.fromJson(jsonStr, Click[].class); 
0

Eine andere solide Option ist Jackson es scheint ein ziemlich solides Tutorial zu haben. Ich bin nicht damit vertraut, also hoffe ich, dass das hilft.

Die Hauptidee ist, dass es ein Objekt Mapper

ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\user.json"), User.class); 

Schritt 4 sollte die beste Wahl sein, nur werden Sie wahrscheinlich etwas anderes wollen, als User.class

EDIT verwendet:

Wenn Sie sich für die Verwendung von Gson entschieden haben, hilft Ihnen vielleicht ein Blick auf andere ähnliche Antworten. This question geht es darum, JSON in POJO (Plain Old Java Objects) umzuwandeln, und es gibt ein paar mehr, wie sie herumschweben. Auch hier bin ich nicht besonders vertraut und ich kann versuchen, ein paar Fragen zu beantworten, aber ich hoffe, das bringt dich dorthin, wo du hin musst.

Glückliche Codierung! Hinterlasse einen Kommentar, wenn du irgendwelche Fragen hast.

+0

yeah Ich weiß, dass Jackson existiert, aber gson scheint benutzerfreundlicher und schneller in seiner Verwendung, aber ich verstehe es einfach nicht, User.class wird Click.class sein, das ich bereits in gson so gut kannte, so weit ich – ProblemAnswerQue

+0

herausgefunden habe Jackson zu arbeiten, Sie müssen auch einen leeren Konstruktor für Ihre Klasse haben –

+0

in der Gson-Beispiel schreiben sie es so: Gson gson = new Gson(); System.out.println ( gson.fromJson ("{'id': 1, 'Vorname': 'Lokesh', 'Nachname': 'Gupta', 'Rollen': ['ADMIN', 'MANAGER'] } ", Employee.class)); Ausgang: Mitarbeiter [id = 1, vorName = Lokesh, nachName = Gupta, Rollen = [ADMIN, MANAGER]] – ProblemAnswerQue

1

Überprüfen Sie die Gson API und einige Beispiele. Ich habe die Links unten gesetzt!

String jsonString = //your json String 
Gson gson = new Gson(); 
Type typeOfList = new TypeToken<List<Map<String, Integer>>>() {}.getType(); 
List<Map<String, Integer>> list = gson.fromJson(jsonString, typeOfMap); 

List<Click> clicks = new ArrayList<Click>(); 
for(int i = 0; i < list.size(); i++) { 
    int x = list.get(i).get("x"); 
    int y = list.get(i).get("y"); 
    clicks.add(new Click(x, y)); 
} 

(http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html) (http://google-gson.googlecode.com/svn/tags/1.5/src/test/java/com/google/gson/functional/MapTest.java)

+0

jetzt habe ich dies: "\\ data.json" private static final String filePath = ; BufferedReader br; Gson gson = neuer Gson(); Klicken Sie auf click = gson.fromJson (br, Click.class); System.out.println (klick); aber es sagt immer noch, dass meine JSON-Datei ein falsches Startobjekt und Ending-Objekt – ProblemAnswerQue

+0

Ich bin mir nicht sicher, wie BufferedReader in dieser Methode funktioniert. Ich wusste nicht, dass du das tun kannst. Das könnte der Grund sein, warum Sie den Fehler erhalten. – haley

+0

Bist du fest daran, den JSON in eine Saite zu bekommen? – haley