Рубрики
Без рубрики

Джексон – Преобразование строки JSON в карту

– Джексон – Преобразование строки JSON в карту

Автор оригинала: mkyong.

В Джексоне мы можем использовать mapper.readValue(json, Map.class ) для преобразования строки JSON в Карту

P.S Протестировано с Джексоном 2.9.8

	
		com.fasterxml.jackson.core
		jackson-databind
		2.9.8
	

1. Строка JSON для отображения

package com.mkyong;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.Map;

public class JacksonMapExample1 {

    public static void main(String[] args) {

        ObjectMapper mapper = new ObjectMapper();
        String json = "{\"name\":\"mkyong\", \"age\":\"37\"}";

        try {

            // convert JSON string to Map
            Map map = mapper.readValue(json, Map.class);

			// it works
            //Map map = mapper.readValue(json, new TypeReference>() {});

            System.out.println(map);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Выход

{name=mkyong, age=37}

2. Сопоставление со строкой JSON

package com.mkyong;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.HashMap;
import java.util.Map;

public class JacksonMapExample2 {

    public static void main(String[] args) {

        ObjectMapper mapper = new ObjectMapper();

        Map map = new HashMap<>();
        map.put("name", "mkyong");
        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();
        }


    }
}

Выход

{"name":"mkyong","age":"37"}
{
  "name" : "mkyong",
  "age" : "37"
}

3. Массив JSON для отображения?

3.1 Строка массива JSON, подобная этой

[{"age":29,"name":"mkyong"}, {"age":30,"name":"fong"}]

Он должен быть преобразован в Список , а не в Карту , например:

	// convert JSON array to List
	List list = Arrays.asList(mapper.readValue(json, Person[].class));

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/”