Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- treeset
- 싸피
- 면접합격
- 프로시저
- 추가합격
- 삼성 #교육 #개발자 #웹
- gitlab
- BOJ
- mybatis
- 백엔드
- tmehz
- JsonObect
- RequiredArgsConstructor
- BFG
- Java
- 커밋옮기기
- SSAFY
- SQL
- 백준
- commit
- IntelliJ
- pymysql
- UnsupportedOperationException
- 프로젝트회고록
- SSAFY #싸피 #7기 #합격 #개발
- window
- github
- 이중우선순위큐
- 윈도우우분투
- 의존성주입
Archives
- Today
- Total
데굴데굴 굴러가는 개발 블로그
[JAVA] JsonObject 데이터 다루기 본문
공인인증서 + 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 |