Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chuyển đổi JSON sang/ từ Map bằng Jackson trong Java

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.