Wie konvertiere ich den folgenden JSON-String in ein Java-Objekt?

70

Ich möchte die folgende JSON-Zeichenfolge in ein Java-Objekt konvertieren:

String jsonString = "{
"libraryname":"My Library",
"mymusic":[{"Artist Name":"Aaron","Song Name":"Beautiful"},
{"Artist Name":"Britney","Song Name":"Oops I did It Again"},
{"Artist Name":"Britney","Song Name":"Stronger"}]}"

Mein Ziel ist es, einfach darauf zuzugreifen, wie:

(e.g. MyJsonObject myobj = new MyJsonObject(jsonString)
myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").

Ich habe von Jackson gehört, bin mir aber nicht sicher, wie ich es verwenden soll, um es an die JSON-Zeichenfolge anzupassen, die ich habe, da es sich aufgrund der Liste "mymusic" nicht nur um Schlüsselwertpaare handelt. Wie kann ich das mit Jackson erreichen oder gibt es eine einfachere Möglichkeit, dies zu erreichen, wenn Jackson nicht der Beste dafür ist?

Rolando
quelle

Antworten:

144

Sie müssen dafür nicht mit GSON gehen. Jackson kann entweder einfache Karten / Listen erstellen:

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

oder bequemer JSON-Baum:

JsonNode rootNode = mapper.readTree(json);

Übrigens gibt es keinen Grund, warum Sie Java-Klassen nicht erstellen und es (IMO) bequemer machen könnten:

public class Library {
  @JsonProperty("libraryname")
  public String name;

  @JsonProperty("mymusic")
  public List<Song> songs;
}
public class Song {
  @JsonProperty("Artist Name") public String artistName;
  @JsonProperty("Song Name") public String songName;
}

Library lib = mapper.readValue(jsonString, Library.class);
StaxMan
quelle
Ich habe versucht, diese Art von JSON-Zeichenfolge mit Jackson zu senden, aber es werden nur Nullwerte zurückgegeben.[{"id":62,"name":"projectname1","batchClassId":1283,"batchClassName":"sample_batchclass26","assetCount":0},{"id":8,"name":"projectname_tmp","batchClassId":1283,"batchClassName":"sample_batchclass26","assetCount":0}]
Madura Harshana
Das ist ein JSON-Array, daher muss es an Java Collection(wie List) oder Array (kann Typ verwenden Object[].class) gebunden sein . Oder einfach nur java.lang.Object(wird vom Typ sein List). Es wird gut funktionieren.
StaxMan
1
Verwenden Sie diese Website, um Ihren JSON in ein Java POJO jsonschema2pojo.org zu konvertieren . Sie können auch Getter und Setter deaktivieren und stattdessen Lombok verwenden, um POJOs klarer zu halten
jellyDean
Können Sie bitte ein Beispiel für die direkte Konvertierung in Java-Objekte angeben (nach dem, was Sie bereits in Form von Anmerkungen angegeben haben)
Dhruv Singhal
26

Schauen Sie sich Googles Gson an: http://code.google.com/p/google-gson/

Von ihrer Website:

Gson gson = new Gson(); // Or use new GsonBuilder().create();
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2

Sie müssten lediglich eine MyType-Klasse (natürlich umbenannt) mit allen Feldern in der JSON-Zeichenfolge erstellen. Es kann etwas komplizierter werden, wenn Sie die Arrays ausführen. Wenn Sie die gesamte Analyse lieber manuell durchführen möchten (auch ziemlich einfach), lesen Sie http://www.json.org/ und laden Sie die Java-Quelle für den Json herunter Parser-Objekte.

jpalm
quelle
9
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject object = (JsonObject) parser.parse(response);// response will be the json String
YourPojo emp = gson.fromJson(object, YourPojo.class); 
Praveen Kokkula
quelle
Bitte fügen Sie eine Beschreibung hinzu, um den Code ebenfalls zu erläutern. Vielen Dank!
Failed Scientist
1
JsonParserist beraubt!
H. Karatsanov
3

Gson ist auch gut dafür: http://code.google.com/p/google-gson/

"Gson ist eine Java-Bibliothek, mit der Java-Objekte in ihre JSON-Darstellung konvertiert werden können. Sie kann auch zum Konvertieren einer JSON-Zeichenfolge in ein gleichwertiges Java-Objekt verwendet werden. Gson kann mit beliebigen Java-Objekten arbeiten, einschließlich bereits vorhandener Objekte habe keinen Quellcode von. "

Überprüfen Sie die API-Beispiele: https://sites.google.com/site/gson/gson-user-guide#TOC-Overview Weitere Beispiele: http://www.mkyong.com/java/how-do-convert-java -Objekt-zu-von-json-Format-gson-api /


quelle