Programing/JSON

JAVA JSON String parsing String to JSON json 파싱

리커니 2017. 9. 14.
반응형

 

JAVA JSON String parsing String to JSON json 파싱 

 

[Spec]

JAVA

Spring 3.5

MVC

json-simple

 

json에 대한 설명은 아래의 Link를 참고하세요.

 

Link : JSONObject JSONArray 에 대한 이해 및 사용법

 

JSONObject JSONArray 에 대한 이해 및 사용법

JSONObject JSONArray 에 대한 이해 및 사용법 이번 포스팅에서는 JSONObject 와 JSONArray에 대해서 알아보도록 하겠습니다. 우선 그 전에 JSON에 대해 알아보도록 하죠. JSON이란 Javascript Object Notation 의..

aljjabaegi.tistory.com

POST 방식으로 일반 데이터와 JSON 데이터가 같이 받아야 할 때가 있습니다.

 

예를 들어 javascript 에서 Object로 id와 json 파라메터를 보낸다고 합시다.

(JSON.stringify 사용 안함)

 

1
2
3
var obj = new Object();
obj.id = 'geon'
obj.json = "{\"msdData\":{\"msdVersion\":2,\"msgId\":1}}";
cs

 

위의 obj가 넘어온다고 할때

Controller 에서는 @ResonseBody 어노테이션을 통해서 바로 VO객체에 매핑할 수 있습니다.

VO는 setId와 setJson을 통해서 String 데이터를 받게 되겠죠.

 

하지만 getJson으로 받은 데이터를 찍어보면 큰따옴표(") 가 " 치환되어 넘어온 것을 확인하실 수 있습니다.{"msdData":{"msdVersion":2,"msgId":1}}; 와 같이.

그래서 "를 큰따옴표(")로 치환을 해서 파싱 해야 합니다.

 

1
String madData = param.getMsddecoded().replaceAll(""""\"");
cs

 

이런식으로 말이죠. 그럼 JSON 형태의 String을 JSONObject로 파싱 할 수 있습니다.

 

참고)

큰따옴표를 문자열에 넣을 때는 충돌이 일어나기 때문에 반드시escape 해주셔야 합니다(\" 와 같이)

 

 

 

그럼 이제 JSON으로 Parsing 할 수 있는 String 형태가 되었습니다.

 

{"msdData":{"msdVersion":2,"msgId":1}};

 

이를 JSONObject 형태로 만들기 위해 google 에서 제공하는 json simple 을 사용하도록 하겠습니다.

pom.xml에 아래의 디펜던시를 추가해주세요.

 

<dependency>
      <groupId>com.googlecode.json-simple</groupId>
      <artifactId>json-simple</artifactId>
      <version>1.1</version>
</dependency>

 

import org.json.simple.parser.JSONParser; 이 추가되면서

아래와 같이 JSONParser class를 사용할 수 있습니다.

 

JSONObject나 JSONArray를 사용한다면

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

도 import 하면 됩니다.

 

1
2
3
JSONParser jsonParser = new JSONParser();
String madData = param.getMsddecoded().replaceAll("&quot;""\"");
JSONObject jobj = (JSONObject) jsonParser.parse(madData);
cs

 

알맞은 json 형태의 string 값이 왔다면 해당 값을 object 형태로 변환 할 수 있는 것이죠. 

이제 JSONObject 형테의 데이터 컨트롤이 가능해졌습니다.

 

1
2
3
JSONObject msdObj = (JSONObject) jobj.get("msdData");
int msdVersion = ((Long)msdObj.get("msdVersion")).intValue();
int msgId = ((Long)msdObj.get("msgId")).intValue();
cs

 

위와 같이 json 데이터를 핸들링 할 수 있습니다.

반응형

댓글

💲 추천 글