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 값 중 원하는 값을 추출하여 사용할 수 있습니다 :)
'CODING STUDY > JAVA' 카테고리의 다른 글
[Java] BooleanBuilder과 BooleanExpression (0) | 2024.09.27 |
---|---|
[Java] Spring Batch 버전 5로 업그레이드 (0) | 2024.05.30 |
[Java] SpringBoot3으로 버전 업그레이드 (API version) (0) | 2024.05.30 |
[Java] association, collection을 사용하여 데이터 가져오기 (0) | 2024.04.12 |
[Java] CompletableFuture (0) | 2024.03.21 |