반응형

1. 개요

 서버에서 API 통신이나 HTTP 통신에 대한 응답 값으로 Json 형식의 문자열 데이터가 오는 경우가 있다. 이때 데이터의 특정 key에 해당하는 값에 접근하기 위해 String 클래스에서 제공하는 메서드를 사용할 수도 있으나, 데이터가 복잡해지고, Node 가 많아질 수록 데이터 조작 및 접근에 한계를 느끼게 된다.

 이를 해소할 수 있는 방안으로 문자열 데이터를 JsonObject로 변환하는 방식이 있다. 이를 사용해보자.

 

2. 로직

 간단한 구조에서는 아래 4가지만 기억하면 된다. 

 

 1) String 형식의 JSON 문자열

 2) JSONParser

 3) To Object

 4) To JSONObject

 

 위 4가지를 기억하고 아래 코드를 보자.

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
    public static void jsonTest() throws ParseException{
        //1. Json 문자열
        String strJson = "{\"userId\":\"sim\", "
                        + "\"userPw\":\"simpw\","
                        + "\"userInfo\":{"
                            + "\"age\":50,"
                            + "\"sex\":\"male\""
                            + "}"
                        + "}";
        
        //2. Parser
        JSONParser jsonParser = new JSONParser();
        
        //3. To Object
        Object obj = jsonParser.parse(strJson);
        
        //4. To JsonObject
        JSONObject jsonObj = (JSONObject) obj;
        
        //print
        System.out.println(jsonObj.get("userId")); //sim
        System.out.println(jsonObj.get("userPw")); //simpw
        System.out.println(jsonObj.get("userInfo")); // {"sex":"male","age":50}
 
    }
cs

 1) Json 문자열을 준비한다. (3 line)

  - API를 통해 받아왔다고 가정하고 String 형식의 userId, userPw와 Object 형식의 userInfo 데이터를 준비한다.

  - Json 형식은 {key:value} 형식이며, key값은 큰따옴표(")로 묶여있다. Parser 는 이 큰따옴표를 통해 파싱 처리를 하기 때문에 키 값에 \" 문자열을 추가해주었다.

 

 2) JSONParser (12 line)

  - 문자열을 Json 형식에 맞게 Object로 파싱할 수 있는 Parser를 생성한다. 

 

 3) To Object (15 line)

  - jsonParser를 통해 Json 문자열을 Object 형식으로 파싱한다.

 

 4) To JSONObject (18 line)

  - Object 형식의 데이터를 JSONObject 형식으로 형변환한다.

 

3. 테스트 결과

 JSONObject 형 객체를 통해 String, Object 등의 모든 Json 형식의 데이터에 접근할 수 있다.

반응형

+ Recent posts