Jackson là thư viện Java với data binding mạnh mẽ, serialize đối tượng Java sang JSON và deserialize ngược lại. Có thể chuyển đổi JSON sang/ từ Map dùng readValue() và writeValueAsString() của com.fasterxml.jackson.databind.ObjectMapper.
JSON sang Map
Cú pháp
public <T> T readValue(String content, TypeReference valueTypeRef) throws IOException, JsonParseException, JsonMappingException
Ví dụ
import java.io.*;
import java.util.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
public class ConvertJSONToMapTest {
public static void main(String args[]) {
try {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"Name\":\"Raja\", \"Technology\":\"Java\"}";
Map<String, Object> jsonMap = mapper.readValue(jsonString, new TypeReference<Map<String, String>>(){});
System.out.println(jsonMap);
} catch(IOException ie) {
ie.printStackTrace();
}
}
}
Kết quả
{Name=Raja, Technology=Java}
Map sang JSON
Cú pháp
public String writeValueAsString(Object value) throws JsonProcessingException
Ví dụ
import java.io.*;
import java.util.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ConvertMapToJSONTest {
public static void main(String args[]) throws IOException {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "";
Map<String, Object> map = new HashMap<String, Object>();
map.put("Raja", "Java Technology");
map.put("Ravi", "Python Technology");
map.put("Adithya", "Spark Technology");
map.put("Vamsi", "Web Technology");
jsonString = mapper.writeValueAsString(map);
System.out.println(map);
}
}
Kết quả
{"Raja":"Java Technology", "Vamsi":"Web Technology", "Ravi":"Python Technology", "Adithya":"Spark Technology"}
Lưu ý: TypeReference anonymous class cần thiết để giữ kiểu generic Map<String, String> tại runtime. Jackson cũng hỗ trợ Map<String, Object> cho value kiểu hỗn hợp.