데굴데굴 굴러가는 개발 블로그

[JAVA] JsonObject 데이터 다루기 본문

개발/Java

[JAVA] JsonObject 데이터 다루기

Daram-e 2023. 10. 27. 14:23

공인인증서 + ActiveX 기반의 카드결제(익스플로러에서만 가능해서 개선 요청이 계속 들어왔던 건) 시스템을 

결제위젯SDK + API 으로 변경하는 리뉴얼 작업을 맡아, 토스페이먼츠측에서 제공하는

Json 형식의 반환값을 처리하던중 발생한 문제를 해결한 방법을 서술한다.

 

[ 반환 값 ]

전달받은 객체의 형식은 위와 같이 JSON객체 안에 객체가 들어있었다.

{
  key1 : value1,
  key2 : value2,
  key3 : {
           key4 : value4,
           key5 : value5
         }
}

 

[Java 코드]

아래는 Java 파일에서 Json객체를 전달받고, 데이터를 다룬 코드이다. 

import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class MyClass {

    public static void main(String[] args) {
        // JSON 데이터를 읽어오는 입력 스트림 (responseStream)을 설정해야 합니다.
        InputStream responseStream = ...; // 입력 스트림을 설정
        // 입력 스트림을 읽어올 Reader를 생성합니다.
        Reader reader = new InputStreamReader(responseStream, StandardCharsets.UTF_8);
        // JSON 파서를 생성합니다.
        JsonParser parser = new JsonParser();

        // JSON 데이터를 파싱하여 JsonObject로 변환 + card 객체 가져오기
        JsonObject jsonObject = (JsonObject) parser.parse(reader).getAsJsonObject();
        JsonObject card = jsonObject.getAsJsonObject("card");

        // card 객체가 존재하는 경우
        if (card != null) {
            String amount = card.get("amount").getAsString();
            // 후속 작업 처리
        } else {
            // card 객체가 존재하지 않는 경우 처리
        }
        
    }
}

[요약]

JSON 객체를 JAVA 에서 다루려면

1. JsonParsor로 InputStreamReader로 받아온 정보를 파싱한후

2. .getAsJsonObect() 로 JsonObject로 변환

3-1. 바로 key-value로 접근할 수 있는 값이라면 객체.get("key값")으로 가져오고

3-2. key : { key2 : {value}, key3:{value2} }와 같은 형태라면

        json객체.getAsJsonObject("key값")으로 한번 더 파싱 후 .get("key") 로 데이터에 접근할 수 있다.

'개발 > Java' 카테고리의 다른 글

[JAVA] Stream을 활용한 list 필터링  (0) 2024.05.07
[Java/Mybatis] java.lang.UnsupportedOperationException  (1) 2024.01.05