web-dev-qa-db-fra.com

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

Je souhaite 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 but 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 s'adapter à la chaîne json que j'ai, car ce n'est pas seulement des paires de valeurs clés en raison de la liste "mymusic" impliquée. Comment puis-je accomplir cela avec Jackson ou y a-t-il un moyen plus simple de le faire si Jackson n'est pas le meilleur pour cela?

53
Rolando

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 plus pratique arbre JSON:

JsonNode rootNode = mapper.readTree(json);

En passant, il n'y a aucune raison pour que vous ne puissiez pas réellement créer les 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);
108
StaxMan

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

Il vous suffirait de créer une classe MyType (renommée, bien sûr) avec tous les champs de la chaîne json. Cela peut devenir un peu plus compliqué lorsque vous utilisez les tableaux, si vous préférez effectuer toutes les analyses manuellement (également assez facile), consultez la page http://www.json.org/ et téléchargez la source Java) pour les objets de l'analyseur Json.

18
jpalm
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); 
4
Praveen Kokkula

Gson est également bon pour cela: 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. Elle peut également être utilisée pour convertir une chaîne JSON en un équivalent Java. Gson peut fonctionner avec des objets arbitraires Java, y compris des objets préexistants pour lesquels vous ne possédez pas de code source. "

Vérifiez les exemples d’API: https://sites.google.com/site/gson/gson-user-guide#TOC-Overview Autres exemples: http: //www.mkyong. com/Java/comment-convertir-Java-objet-de-json-format-gson-api /

1
user1352498