Comment convertir la chaîne json suivante en objet java?


Je veux convertir la chaîne JSON suivante en un objet java:

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"}]}"

Mon objectif est d'y accéder facilement quelque chose comme:

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

J'ai entendu parler de Jackson, mais je ne sais pas comment l'utiliser pour adapter la chaîne json que j'ai car ce ne sont pas seulement des paires clé-valeur en raison de la liste "mymusic" impliquée. Comment puis-je accomplir cela avec Jackson ou y a-t-il un moyen plus facile de le faire si Jackson n'est pas le meilleur pour cela?

Author: Sujan S Ravi K, 2012-04-25

5 answers

Pas besoin d'aller avec GSON pour cela; Jackson peut faire soit des cartes/listes simples:

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

Ou arborescence JSON plus pratique:

JsonNode rootNode = mapper.readTree(json);

En passant, il n'y a aucune raison pour laquelle vous ne pourriez pas réellement créer des classes Java et le faire (IMO) plus facilement:

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);
 77
Author: StaxMan, 2012-04-25 21:22:57

Découvrez Gson de Google: http://code.google.com/p/google-gson/

De leur site Web:

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

Vous auriez juste besoin de créer une classe MyType (renommée, bien sûr) avec tous les champs de la chaîne json. Cela pourrait devenir un peu plus compliqué lorsque vous faites les tableaux, si vous préférez faire toute l'analyse manuelle (également assez facile), consultez http://www.json.org / et téléchargez la source Java pour les objets de l'analyseur Json.

 8
Author: jpalm, 2012-04-25 02:28:42

Gson est également bon pour elle: http://code.google.com/p/google-gson/

" Gson est une bibliothèque Java qui peut être utilisée pour convertir des objets Java en leur représentation JSON. Il peut également être utilisé pour convertir une chaîne JSON en un objet Java équivalent. Gson peut travailler avec des objets Java arbitraires, y compris des objets préexistants dont vous n'avez pas le code source. "

Vérifiez les exemples d'API: https://sites.google.com/site/gson/gson-user-guide#TOC-Overview Plus exemples: http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

 0
Author: , 2012-04-25 02:18:39
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); 
 0
Author: Praveen Kokkula, 2018-07-25 14:02:52

Oui, vous pouvez essayer json-lib-2.3-jdk15.pot télécharger depuis http://sourceforge.net/projects/json-lib/files/latest/download

 -5
Author: helloannalil, 2012-04-25 03:41:30