Джексон - преобразовать строку JSON в карту
В Джексоне мы можем использоватьmapper.readValue(json, Map.class)
для преобразования строки JSON вMap
P.S Tested with Jackson 2.9.8
pom.xml
com.fasterxml.jackson.core jackson-databind 2.9.8
1. Строка JSON для карты
JacksonMapExample1.java
package com.example; 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\":\"example\", \"age\":\"37\"}"; try { // convert JSON string to Map Mapmap = mapper.readValue(json, Map.class); // it works //Map map = mapper.readValue(json, new TypeReference
Выход
{name=example, age=37}
2. Сопоставить со строкой JSON
JacksonMapExample2.java
package com.example; 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", "example"); 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":"example","age":"37"} { "name" : "example", "age" : "37" }
3. Массив JSON для сопоставления?
3.1 JSON array string like this
[{"age":29,"name":"example"}, {"age":30,"name":"fong"}]
Он должен преобразоваться вList
вместоMap
, например:
// convert JSON array to List Listlist = Arrays.asList(mapper.readValue(json, Person[].class));
Note
Прочтите этоJackson
– Convert JSON array string to List