Hoe converteer ik de volgende json-tekenreeks naar een java-object?

Ik wil de volgende JSON-tekenreeks converteren naar een Java-object:

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

Mijn doel is om er gemakkelijk toegang toe te krijgen, zoiets als:

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

Ik heb van Jackson gehoord, maar ik weet niet zeker hoe ik het moet gebruiken om in de json-string te passen die ik heb, omdat het niet alleen sleutelwaardeparen zijn vanwege de “mymusic”-lijst die erbij betrokken is. Hoe kan ik dit met Jackson bereiken of is er een eenvoudigere manier om dit te bereiken als Jackson hier niet de beste voor is?


Antwoord 1, autoriteit 100%

Hiervoor hoef je niet met GSON te gaan; Jackson kan zowel gewone kaarten/lijsten:

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

of handiger JSON Tree:

JsonNode rootNode = mapper.readTree(json);

Trouwens, er is geen reden waarom u geen Java-klassen zou kunnen maken en het (IMO) gemakkelijker zou kunnen doen:

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);

Antwoord 2, autoriteit 18%

Bekijk Gson van Google: http://code.google.com/p/google- gson/

Van hun website:

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

Je hoeft alleen maar een MyType-klasse te maken (natuurlijk hernoemd) met alle velden in de json-string. Het kan een beetje ingewikkelder worden als je de arrays doet, als je liever al het parseren handmatig doet (ook vrij eenvoudig), kijk dan eens naar http://www.json.org/ en download de Java-bron voor de Json-parserobjecten.


Antwoord 3, autoriteit 5%

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); 

Antwoord 4, autoriteit 2%

Gson is er ook goed voor: http://code.google.com/p/ google-gson/


Gson is een Java-bibliotheek die kan worden gebruikt om Java-objecten om te zetten in hun JSON-representatie. Het kan ook worden gebruikt om een ​​JSON-tekenreeks te converteren naar een equivalent Java-object. Gson kan werken met willekeurige Java-objecten, inclusief reeds bestaande objecten waarvan u geen broncode hebt.

Bekijk de API-voorbeelden: https://sites.google .com/site/gson/gson-user-guide#TOC-Overview
Meer voorbeelden: http ://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/


Antwoord 5

Underscore-java kan json naar Object converteren.

    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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

fourteen + thirteen =

Other episodes