유혁의 개발 스토리

[Java] JSONObject, JSONArray 사용법 본문

Java

[Java] JSONObject, JSONArray 사용법

유혁. 2017. 7. 18. 16:23

1. JSON을 사용하는 이유

 

  Json은 주로 서버에서 클라이언트에게 값을 전달해 주는 목적으로 사용됩니다. 특정 키 값과 Value 값을 가지는 형태로 되어있으며 Java의 HashMap이 여러개 있는 형태와 비슷하게 구성됩니다.

  "서버에서 클라이언트에게 값을 전달하는데 Json말고 내가 원하는 문자 형태로 Parsing하여 사용해도 되나요?" 라는 질문에 답변하자면 필자 저도 같은 생각을 하였고 얼마전에 Json 말고 문자 '%', '$', '@' 등등 특정 문자 값으로 Split하여 사용했던 기억이 있습니다. 간단한 형태의 값들은 다음과 같은 문자를 사용해도 크게 지장은 없습니다. 하지만 데이터의 수가 많아지게 되면 특수 문자의 개수는 한정되어 있고 추가 하기위해서는 특수문자가 어떤것을 쪼개어 주는지 까지 외우고 있어야합니다. 서로다른 20개의 변수를 문자로 나타낸다면 하나하나 의미를 기억해낼 수 있을까요? 99%는 힘들지 않을까 생각합니다. 또한 상대방이 문자의 특징 하나하나를 이해할 수 없습니다. 또 다른문제로는 저는 HTTP 통신을 하는 도중에 값이 없어지거나 변형되는 현상을 발견하게 되었습니다. 신뢰성이 떨어질 수도 있다는 이야기입니다. Json은 데이터의 교환 방식으로 Restful의 한 종류라고 이야기 할 수있으며 데이터 교환방식을 통일하여 상호간 값을 알아보기 쉽게 정의되어 편리한 작업, 소스코드를 통일할 수 있습니다.

 

 

 

 

2. eclipse Java json 사용법

 

 

json .jar 파일을 다운받습니다.

 

json_simple-1.1.jar

 

 

json을 사용하고자 하는 프로젝트파일 우클릭하여

Configure Bulid Path를 클릭합니다.

 

 

 

Libraries 창의 Add External JARs.. 를 클릭해줍니다.

 

 

 

 

json.jar 파일을 jre/bin/ext 경로에 넣어주고

json_simple을 열어줍니다. 이후에 라이브러리가 추가되면

apply -> ok 하시면 됩니다.

 

 

 

 

java 소스입니다.

 

JSON.class

9 :       name이라는 key "유혁"이라는 문자열을 jsonObject에 넣어줍니다.

          jsonString = {"name":"유혁"} 이렇게 됩니다.

13,14 : jsonArray에 값을 넣어줍니다.

18 :     jsonArray를 jsonObject에 넣습니다.

20 :     jsonObject를 String으로 출력합니다.

25 :     school이라는 JSONArray를 받아 for문으로 값을 추출합니다.

 

 

 

결 과

 

 

 

 

 

 

 

------------------------------------------------------------------

 

추 가

 

jsonobject to jsonString

 

만약에 문자열 형태의 json String을 변수에 담고 있다면

JSONObejct로 넣어주어야합니다.

 

2 : JSONParser 객체를 통해 JSONObject에 값 넣어줌

4 : 값 넣는 과정

 

 

------------------------------------------------------------------

 

최근 문제..

 

JSONArray jsonArrayKey = (JSONArray) token.get("children");
  System.out.println(jsonArrayKey.size());
  
  for(int i=0;i<jsonArrayKey.size();i++){
   JSONObject listKey = (JSONObject) jsonArrayKey.get(i);
      
//   System.out.println(listKey.get("key"));
   String a = String.valueOf(listKey.get("key"));
   System.out.println(a);
   
   key.add(a);
  }

 

jsonObject  .get("key") 반환형이 object 형이라 String에 대입이 안되었다..

 

toString써도 안되서 String.valueOf()를 써서 해결했다.

 

 

 

 

 

 

 

잘못된점 지적은 환영하며

 

궁금하신점은 댓글로 남겨주시면 답변드리겠습니다.