Автор оригинала: 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 Mapmap = mapper.readValue(json, Map.class); // it works //Map map = mapper.readValue(json, new TypeReference
Выход
{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(); Mapmap = 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 Listlist = Arrays.asList(mapper.readValue(json, Person[].class));
Рекомендации
- Джексон – Преобразование строки массива JSON в список
- Привязка данных Джексона
- Джексон 2 – Преобразование объекта Java в/из JSON
Оригинал: “https://mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/”