Back-End/Spring

[Spring] JSON 데이터(object, array)를 다뤄보기

HMHA 2023. 2. 10. 10:09
300x250
반응형

이전글 : [Spring] HTTP 통신으로 JSON 데이터 요청 및 응답처리

JSONObject 생성

8 Line에 있는 코드가 외부에서 응답받은 JSON 데이터라 가정해보자. String타입의 JSON포맷데이터이다.
이 값을 JSONObject 생성자 호출시 인자로 전달해주면 JSONObject 객체가 생성되며
get(String key) 메서드로 해당 key에 맞는 value를 꺼내온다. 이때 value엔 어떤타입이 담겨있는지 모르니
해당 값에 맞게 casting을 해주면 된다.

JSONObject 안에 JSONObject 생성

JSON에 대해 공부하신지 얼마 안되신분들은 JSONObject안에 또다른 JSONObject가 있을시 헤메시는 분들이 많다. 하지만 JSON이 key와 value로 이뤄진 데이터 라는것만 알면 쉽게 할 수 있다.

 

8 Line에 JSONObject안에 'family'라는 key에 매핑된 값이 JSONObject로 되어있다.
이때 JSONObject를 생성후 getJSONObject(String key) 메서드 호출시 JSONObject 구조로 되어있는 데이터의 key를 넘겨주면 그 key에 매핑된 값이 JSONObject로 생성된다. JSONObject안에 JSONObject가 몇개가 있던 상관없다.

 

단, 여기서 주의해야할 사항이 있다. 아래사진을 보자.

해당사진은 JSONObject안에 있는 key에 접근하다 발생된 예외이다.
원하는 JSON데이터를 조회할때는 상위부터 접근을 해야한다. 현재 위 사진 같은 경우 JSONObject안에
'family' 라는 JSONObject가 있으므로 제일 최상위 JSONObject에 접근한 뒤에 'family' 라는 JSONObjec에 접근해야한다.

JSONArray 생성

JSONArray는 말그대로 배열안의 요소들이 JSONObject들로 이루어진걸 알 수 있다.
접근하는 방식은 JSONObject의 각 인덱스 요소에 접근해서 위에 사진처럼 조회해주면 된다.

JSON -> JAVA 객체로 변환

JSONObject 와 JSONArray는 각각 Map이나 List로 변환하는 toMap(), toList() 메서드를 제공해준다.
toList()는 제네릭타입이 Object인데 key와 value 구조로 되어있다보니 HashMap으로 casting이 가능하다.

응용

실제로 개발할때는 위의 예제처럼 구조가 단순하진 않을것이다. 그래서 한번 복잡(?)하게 구조를 짜보고
원하는 데이터를 조회해보았다.

 


 

출처 : https://kim-jong-hyun.tistory.com/32

 

[JAVA] - JSON 데이터(object, array)를 다뤄보기

2장에서는 JAVA에서 JSON 데이터로 HTTP 통신을 해보는 시간을 가졌는데 이번에는 직접 JSON 데이터를 다뤄보는 시간을 가져보자 JSON 데이터를 다루기 위한 라이브러리와 HTTP통신하는 예제는 아래링

kim-jong-hyun.tistory.com

 

300x250
반응형