Jackson มี Data Binding อันทรงพลัง Serialize Java Objects → JSON และ Deserialize JSON → Java Objects แปลง JSON ↔ Map ด้วย readValue() และ writeValueAsString() ของ com.fasterxml.jackson.databind.ObjectMapper
1. JSON → Map
Syntax
public <T> T readValue(String content, TypeReference<T> valueTypeRef)
throws IOException, JsonParseException, JsonMappingException
ตัวอย่าง
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();
}
}
}
ผลลัพธ์
{Name=Raja, Technology=Java}
2. Map → JSON
Syntax
public String writeValueAsString(Object value) throws JsonProcessingException
ตัวอย่าง
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();
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");
String jsonString = mapper.writeValueAsString(map);
System.out.println(jsonString);
}
}
ผลลัพธ์
{"Raja":"Java Technology","Vamsi":"Web Technology","Ravi":"Python Technology","Adithya":"Spark Technology"}
Pretty Print: ใช้ mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map)
TypeReference: จำเป็นสำหรับ Generic Types (Type Erasure) รูปแบบ new TypeReference<Map<K,V>>() {}