In Jackson, we can use mapper.readValue(json, Map.class)
to convert a JSON string to a Map
P.S Tested with Jackson 2.9.8
pom.xml
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency>
1. JSON string to Map
JacksonMapExample1.java
package com.favtuts.json; import java.io.IOException; import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonMapExamples { public static void main(String[] args) { convertJSONstringToMap(); } static void convertJSONstringToMap() { ObjectMapper mapper = new ObjectMapper(); String json = "{\"name\":\"favtuts\", \"age\":\"37\"}"; try { // convert JSON string to Map Map<String, String> map = mapper.readValue(json, Map.class); // it works // Map<String, String> map = mapper.readValue(json, new // TypeReference<Map<String, String>>() {}); System.out.println(map); } catch (IOException e) { e.printStackTrace(); } } }
Output
{name=favtuts, age=37}
2. Map to JSON string
JacksonMapExample2.java
package com.favtuts.json; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonMapExamples { public static void main(String[] args) { convertMapToJSONstring(); } static void convertMapToJSONstring() { ObjectMapper mapper = new ObjectMapper(); Map<String, String> map = new HashMap<>(); map.put("name", "favtuts"); map.put("age", "37"); try { // convert map to JSON string String json = mapper.writeValueAsString(map); System.out.println(json); // compact-print json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); System.out.println(json); // pretty-print } catch (JsonProcessingException e) { e.printStackTrace(); } } }
Output
{"name":"favtuts","age":"37"}
{
"name" : "favtuts",
"age" : "37"
}
3. JSON Array to Map?
3.1 JSON array string like this
[{"age":29,"name":"favtuts"}, {"age":30,"name":"fong"}]
It should convert to a List
, instead of a Map
, for example :
// convert JSON array to List
List<Person> list = Arrays.asList(mapper.readValue(json, Person[].class));
Note
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-basic/json