I want to convert the following JSON string to a 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" } ] }"
My goal is to access it easily something like:
(e.g. MyJsonObject myobj = new MyJsonObject(jsonString) myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").
I've heard of Jackson, but I am unsure how to use it to fit the json string I have since its not just key value pairs due to the "mymusic" list involved. How can I accomplish this with Jackson or is there some easier way I can accomplish this if Jackson is not the best for this?
We can convert a JSON to Java Object using the readValue() method of ObjectMapper class, this method deserializes a JSON content from given JSON content String.
Use the JavaScript function JSON. parse() to convert text into a JavaScript object: const obj = JSON.
No need to go with GSON for this; Jackson can do either plain Maps/Lists:
ObjectMapper mapper = new ObjectMapper(); Map<String,Object> map = mapper.readValue(json, Map.class);
or more convenient JSON Tree:
JsonNode rootNode = mapper.readTree(json);
By the way, there is no reason why you could not actually create Java classes and do it (IMO) more conveniently:
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);
Check out Google's Gson: http://code.google.com/p/google-gson/
From their website:
Gson gson = new Gson(); // Or use new GsonBuilder().create(); MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2
You would just need to make a MyType class (renamed, of course) with all the fields in the json string. It might get a little more complicated when you're doing the arrays, if you prefer to do all of the parsing manually (also pretty easy) check out http://www.json.org/ and download the Java source for the Json parser objects.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With