125 votes

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

Je veux convertir la chaîne JSON suivante en 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 s'adapter à la chaîne json que j'ai depuis ce n'est pas seulement des paires de valeurs clés en raison de la liste "mymusic" impliqué. 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 ?

235voto

StaxMan Points 34626

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

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

ou plus pratique JSON Tree :

JsonNode rootNode = mapper.readTree(json);

Au fait, il n'y a aucune raison pour que vous ne puissiez pas créer de 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);

8voto

Praveen Kokkula Points 78
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); 

1voto

Underscore-java (dont je suis le développeur) peut convertir json en Objet.

import com.github.underscore.U;

    String jsonString = "{\n" +
            "        \"libraryname\":\"My Library\",\n" +
            "                \"mymusic\":[{\"Artist Name\":\"Aaron\",\"Song Name\":\"Beautiful\"},\n" +
            "        {\"Artist Name\":\"Britney\",\"Song Name\":\"Oops I did It Again\"},\n" +
            "        {\"Artist Name\":\"Britney\",\"Song Name\":\"Stronger\"}]}";
    Map<String, Object> jsonObject = U.fromJsonMap(jsonString);
    System.out.println(jsonObject);

    // {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}]}

    System.out.println(U.<String>get(jsonObject, "mymusic[0].Artist Name"));
    // Aaron

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X