JSON 문자열을 Map 으로 변환하기(Jackson 사용)


https://gturnquist-quoters.cfapps.io/api/random 여기에 있는 JSON을 읽어서 Map 으로 변환하고 이것저것 더 해보기


브라우저에서 위 URL 로 접속해 보면 JSON 문자열을 다음과 같다.

{
   type: "success",
   value: {
      id: 10,
      quote: "Really loving Spring Boot, makes stand alone Spring apps easy."
   }
}



요것을 처리하는 예제 코드

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTest {
	public static void main(String[] args)
            throws JsonParseException, JsonMappingException, MalformedURLException, IOException {

        ObjectMapper mapper = new ObjectMapper();

        // URL 에 있는 JSON String 을 Map으로 변환하기
        Map<String, Object> data = mapper.readValue(
                     new URL("https://gturnquist-quoters.cfapps.io/api/random"), 
                     new TypeReference<Map<String,Object>>(){});




        // {type=success, value={id=9, quote=So easy it is to switch container in #springboot.}}
        System.out.println(data);

        // {id=9, quote=So easy it is to switch container in #springboot.}
        System.out.println(data.get("value"));






        // Map을 JSON String 으로 변환
        // {"type":"success","value":{"id":9,"quote":"So easy it is to switch container in #springboot."}}
        System.out.println(mapper.writeValueAsString(data));


        // Map을 보기쉬운 JSON String 으로 변환
        /*
           {
              "type" : "success",
              "value" : {
                "id" : 9,
                "quote" : "So easy it is to switch container in #springboot."
              }
           }
        */
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(data));
    }
}