sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  

"com.fasterxml.jackson" 과 "com.googlecode.json-simple" 라이브러리는 json data 를 다루는 유틸 라이브러리이다.

jackson 에는 JsonNode 가 있고 json-simple 에는 JSONObject 가 있다.

처음에는 JSONObject 를 주로 사용해서 json data 를 처리 했었는데

얼마전부터 JsonNode 를 사용하게 되었다.

 

JsonNode 를 사용하게 된 이유는 JsonNode 의 get() 함수가 method chaining 방식으로 JsonNode 를 리턴하기 때문에

json data 를 탐색할때 데이터 탐색시 작성이 매우 쉽고 코드 가독성이 높다. (당연히 유지보수가 쉽다)

 

하지만 jackson 에서 JsonNode 를 생성할때는 new 키워드로 생성 할 수가 없다.

최상위 ObjectNode 의 instance 를 다음과 같이 생성해서 JsonNode 로 형변환하여 사용하게 된다.

 

ObjectMapper objectMapper = new ObjectMapper();

ObjectNode rootNode = objectMapper.createObjectNode();

 

위와 같은 번거로움 때문에 JsonNode 의 사용이 번거로웠다.

이리저리 고민하다가 결국 나는 두가지 라이브러리를 함께 사용하는 것으로 결론 지었는데

json data 를 탐색할때는 JsonNode 로 사용하고 json object 를 이용하여 간단한 조작을 할때는 JSONObject 를 사용하게 하였다.

그리고 두 타입의 형변환은 다음과 같은 유틸성 함수를 만들어 사용하여 두가지 모두 이용하게 되었다.

 

    /**

     * JsonNode instance를 JSONObject instance로 변환

     * @param jsonNode

     * @return

     */

    public static JSONObject jsonNodeToJSONObject(JsonNode jsonNode) {

        try {

            // ObjectMapper를 사용하여 JsonNode를 String으로 변환

            ObjectMapper mapper = new ObjectMapper();

            String jsonString = mapper.writeValueAsString(jsonNode);

 

            // 변환된 JSON 문자열을 JSONObject로 변환

            return parseJSONObject(jsonString);

        } catch (Exception e) {

            e.printStackTrace();

            return null; // 예외 발생 시 null 반환

        }

    }

    

    /**

     * JSONObject instance를 JsonNode instance로 변환

     * 단, json data 의 모든 parameter 의 value 는 object reference 가 아니어야 한다.

     * @param jsonObject

     * @return

     * @throws Exception

     */

    public static JsonNode jsonObjectToJsonNode(JSONObject jsonObject) throws Exception {

        ObjectMapper objectMapper = new ObjectMapper();

        return objectMapper.readTree(jsonObject.toString());

    }

 

JSONObject 를 JsonNode 로 변환시의 주의점은 함수의 주석에 적혀 있다.

casting 시 내부적으로 오류가 발생하지만 오류 내용이 출력되지는 않는다.

 

 

번호 제목 글쓴이 날짜 조회 수
22 com.fasterxml.jackson 을 이용한 json data 작성 예제 황제낙엽 2025.10.17 1
21 [ChatGPT] JsonNode 객체에서 asText()와 toString() 의 차이점 황제낙엽 2025.06.30 3
» [JSONObject & JsonNode] "com.fasterxml.jackson" 과 "com.googlecode.json-simple" 라이브러리에 대하여 황제낙엽 2025.02.06 21
19 [Gemini, Jackson] JsonNode의 asText(), textValue(), toString() 함수들과 ObjectMapper.writeValueAsString() 함수 황제낙엽 2025.02.06 212
18 [ChatGPT] json data 의 정렬 (jackson, json simple, gson) 황제낙엽 2024.07.23 400
17 [Gemini] HttpURLConnection 클래스를 이용한 데이터 전송 방식 비교 황제낙엽 2024.03.14 1068
16 [JsonNode] depth 가 여러 단계인 json data 내부를 조회하는 java code 예제 (from Bard) file 황제낙엽 2023.08.09 1037
15 HttpServletRequest, HttpServletResponse, JSONObject, POST 황제낙엽 2022.01.12 720
14 jQuery JSON 데이터 통신의 특성 (HttpServletRequest) 황제낙엽 2019.06.23 739
13 JSON과 GSON 황제낙엽 2019.03.24 748
12 [HttpURLConnection, HttpsURLConnection] 코드참조용 샘플프로젝트 secret 황제낙엽 2019.01.18 0
11 json-rpc 에서 한글 문제 황제낙엽 2018.08.08 740
10 Calendar, Date, Format, java.time 패키지 황제낙엽 2017.10.31 754
9 JSON Util (JSON 을 다루기 위해 직접 작성한 유틸 클래스) file 황제낙엽 2017.07.10 988
8 JSON 라이브러리(API) 종류 황제낙엽 2017.01.18 909
7 [JSON기초04] 자바 JSON 데이터에서 KEY 값 알아오기 (TIP) 황제낙엽 2017.01.18 7578
6 [JSON기초03] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 파싱 황제낙엽 2017.01.18 1136
5 [JSON기초02] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 생성 황제낙엽 2017.01.18 661
4 [JSON기초01] JSON이란? XML이란? JSON 개념, XML 개념 설명 황제낙엽 2017.01.18 871
3 JSON-lib Java Library file 황제낙엽 2013.04.09 629