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

Read this Jackson – Convert JSON array string to List

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-basic/json

References

Leave a Reply

Your email address will not be published. Required fields are marked *