JAVA JSON String parsing String to JSON json 파싱
[Spec]
JAVA
Spring 3.5
MVC
json-simple
json에 대한 설명은 아래의 Link를 참고하세요.
Link : JSONObject JSONArray 에 대한 이해 및 사용법
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 형태가 되었습니다.
이를 JSONObject 형태로 만들기 위해 google 에서 제공하는 json simple 을 사용하도록 하겠습니다.
pom.xml에 아래의 디펜던시를 추가해주세요.
<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(""", "\"");
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 데이터를 핸들링 할 수 있습니다.
'Programing > JSON' 카테고리의 다른 글
크롬에서 JSON 데이터 가독성 높히기 jsonview 활용법 (0) | 2017.06.20 |
---|---|
Json 데이터 ajax 전송 java Controller에서 받기 (0) | 2015.10.12 |
JSONObject JSONArray 에 대한 이해 및 사용법 (1) | 2014.03.27 |
댓글