본문 바로가기
CODING STUDY/JAVA

[Java] Json 값 중 원하는 값 추출하기

by 놀고 쉬고 싶은 개발자 2024. 3. 25.

json 안에 값을 가져와야 해서 난감하던 중 발견한 내용을 정리해 보겠습니다

 

json 예시

 

String jsonValue = "{\"data\": [{\"num\": \"1\",\"value\": \"3212333 001떴다떴다비행기"}]}";

비행기 노래를 예시로 들어보겠습니다!

 

"data": [{
        	"num": "1",
        	"value": "3212333 001떴다떴다비행기"
        }]
}

postman으로 확인해 보면 위의 형태로 내려옵니다.

 

ObjectMapper

 

ObjectMapper mapper = new ObjectMapper();

► ObjectMapper : JSON의 내용을 Java 객체로 역직렬화(Deserialization) / Java 객체를 JSON으로 직렬화(Serialization)할 때 사용

 

여기서 역직렬화, 직렬화란?

✏️ 역직렬화 : 특정 포맷 상태의 데이터를 다시 객체로 변환
✏️ 직렬화 : 자바 내에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환

 

JsonNode

 

JsonNode jsonNode = mapper.readTree(jsonValue);

► JsonNode : String 형태의 Json 데이터를 Tree 형태로 매핑

→ key : data

→ value : {"num": "1","value”: "3212333 001떴다떴다비행기"}

 

► readTree(): Json 문자열을 받아서 JsonNode 객체를 리턴

 

원하는 value값 추출

 

String singAirplane = jsonNode.get("data").get(0).get("value").asText();

► singAirplane = jsonNode 객체 → “data” → value 값을 텍스트 형식으로 반환

 

 

만약 가사만 따로 출력하고 싶다면?

 

String lyrics = singAirplane.substring(singAirplane.indexOf(" ") + 3);

 

► singAirplane.indexOf(" ") + 3 : 위에서 가져온 singAirplane String 값의 → “ “빈칸( 001떴다떴다비행기) → 뒤로 3칸(떴다떴다비행기)

 

이렇게 ObjectMapper, JsonNode를 사용하면 JSON 값 중 원하는 값을 추출하여 사용할 수 있습니다 :)