Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

แปลง JSON ↔ Map ด้วย Jackson Library ใน Java

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>>() {}