2012-04-03 12 views
2

Ich habe viele Seiten ausgecheckt, aber die meisten Tutorials und das Skript geben einen Fehlercode mit dieser Art von JSON-Ausgabe zurück. Wie also würde ich in der Lage sein, die Daten aus dieser JSON in Java zu extrahieren ?:Wie bekomme ich JSON-Daten von einer URL in Java?

[ 
    { 
    "user":{"id":"1","username":"user1"}, 
    "item_name":"item1", 
    "custom_field":"custom1" 
    }, 
    { 
    "user":{"id":"2","username":"user2"}, 
    "item_name":"item2", 
    "custom_field":"custom2" 
    }, 
    { 
    "user":{"id":"3","username":"user3"}, 
    "item_name":"item3", 
    "custom_field":"custom3" 
    } 
] 
+0

Haben Sie die Daten bereits von der URL heruntergeladen und möchten sie lesen? Oder möchten Sie wissen, wie Sie es herunterladen können? – ArjunShankar

+1

Mögliches Duplikat: http://Stackoverflow.com/questions/1688099/converting-json-to-java/1688182#1688182 –

+0

Viele Bibliotheken möchten, dass der gesamte JSON-Inhalt in {} eingeschlossen wird, damit Sie versuchen, Ihre JSON-Daten zu umbrechen in geschweiften Klammern. Ich benutze normalerweise json-lib, um es zu lesen 'JSONObject.fromObject (yourJsonString);' – luukes

Antwort

1

Wenn Sie Gson verwenden, dann zuerst erklären Sie Klassen für jedes Element halten und Unterelemente:

public class MyUser { 
    public String id; 
    public String username; 
} 

public class MyElement { 
    public MyUser user; 
    public String item_name; 
    public String custom_field; 
} 

Dann erklären Sie ein Array des äußersten Elements (weil in Ihrem Fall das JSON-Objekt a JSON-Array), und weisen Sie ihm:

MyElement[] data = gson.fromJson (myJSONString, MyElement[].class); 

Dann einfach Sie die Elemente data zugreifen.

Wichtig ist, dass die Namen und Typen der von Ihnen deklarierten Attribute denen in der JSON-Zeichenfolge entsprechen. z.B. "Id", "item_name" usw.

+0

Ich habe versucht, dies zu verwenden, aber es wird immer noch Fehler, hier ist ein Pastebin Link zu dem, was ich habe: http://pastebin.com/nRiGqq9r Wenn ich 'MyElement [] data = new Gson(). FromJson (jsonText, MyElement.class); ' es wird mir sagen, dass ich MyElement [] zu MyElement ändern muss, also funktioniert das auch nicht, wie kann ich dieses Skript arbeiten lassen? – Aronnn

+0

@Aronnn - In Ihrem fromJson-Aufruf soll der Typ, dem Sie zuweisen, 'MyElement []. Class' sein, nicht' MyElement.Klasse " – ArjunShankar

+0

Hier ist mein Skript mit dem Fehler, den ich bekomme, ich kann wirklich nicht herausfinden, was das Problem ist: http://pastebin.com/iR7ysMx6 – Aronnn

0

Wenn Ihr zu serialisiert versuchen/deserialize json in Java würde ich mit Jackson empfehlen. http://jackson.codehaus.org/

Sobald Sie Jackson heruntergeladen haben, können Sie die JSON-Strings zu einem Objekt deserialisieren, das den Objekten in JSON entspricht.

Jackson stellt Anmerkungen zur Verfügung, die an Ihre Klasse angehängt werden können und die die Deserialisierung sehr einfach machen.

+0

Wie könnte ich die Daten mit JSON aus diesem JSON herausholen? – Aronnn

0

könnten Sie versuchen, einfache JSON
http://code.google.com/p/json-simple/

Beispiel:

JSONParser jsonParser = new JSONParser(); 
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonDataString); 

for (int i = 0; i < jsonArray.size(); i++) { 
    JSONObject obj = (JSONObject) jsonArray.get(i); 
    //Access data with obj.get("item_name") 
} 

Nur vorsichtig sein, für NULL-Werte überprüfen/Vorsicht bei Gießen und so.

Verwandte Themen