[Java] Convert List To JsonArray + Json

2014. 12. 9. 23:32프로그래밍/Java

simple json 사용


list의 값을 그대로 json.put 을 해버리면


값을 받는쪽에서 parse 할 수가 없다. 


때문에.. JSONArray 에 값을 다시 셋팅해줘야 정상적으로 값을 parse 할 수 있다.


===Send Json=======================================================================

List<Test> resultList = new  List<Test>();

JSONArray jArray = new JSONArray();


//결과 리스트 만큼 loop 를 돌면서 json 에 값을 put 해주고, 그 json 값을 다시 Json Array에 add해준다.

for (int i = 0; i < resultList.size(); i++) {

       JSONObject data= new JSONObject();

        data.put("user_id", resultList.get(i).getUser_id());

           

       jArray.add(i, data);;

   }

obj.put("resultList", jArray);

==================================================================================

위와 같이 데이터를 셋팅하면 아래와 같은 Json 데이터가 나온다.

{"resultList":[{"user_id":"test1"},{"user_id":"test1"},{"user_id":"test1"}]}


참고) List를 그대로 put 해주면 {"resultList":[user_id=test1]}   이런 형식으로 값이 들어가기때문에

parse 가 되질않는다.


===Receive Json======================================================================

받는 쪽에서 아래와 같이 Parse를 해준다.


//parseWithException 파라미터에 받은 string형식의 값을 넣어준다.

JSONObject jsonObject = (JSONObject) JSONValue.parseWithException(jsonData); 


JSONArray JsonArray = (JSONArray) genreJsonObject.get("resultList");


//원하는 데이터를 json 에 넣어준다. 

JSONObject a = (JSONObject) JsonArray.get(0);

JSONObject b = (JSONObject) JsonArray.get(1);

//출력

System.out.println(a.get("user_id"));

System.out.println(b.get("user_id"));

===================================================================================