JavaScript에서 json을 생성 하는 방식입니다.
* JavaScript 에서 JSON Parse 하시려는 분은 여기 참고 => http://huskdoll.tistory.com/49
* JAVA 에서 JSON 생성 하시려는 분은 여기 참고 => http://huskdoll.tistory.com/38
* JAVA에서 JSONParser 사용 하시려는 분은 여기 참고 => http://huskdoll.tistory.com/6
json은 key : value 방식 으로 되어 있는데요. value 안에 다시 json 형식의 데이터를 넣어 봤습니다.
말로 설명하기 좀 어려운데 아래 소스를 실행해 보시기 바랍니다
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
$(function() {
$("#checkJson").click(function() {
//사람 정보
var personArray = new Array();
var personInfo = new Object();
personInfo.name = "송강호";
personInfo.age = "25";
personInfo.gender = "남자";
personInfo.nickname = "남궁민수";
personArray.push(personInfo);
personInfo = new Object();
personInfo.name = "전지현";
personInfo.age = "21";
personInfo.gender = "여자";
personInfo.nickname = "예니콜";
personArray.push(personInfo);
//책 정보
var bookArray = new Array();
bookInfo = new Object();
bookInfo.name = "사람은 무엇으로 사는가?";
bookInfo.writer = "톨스토이";
bookInfo.price = "100";
bookInfo.genre = "소설";
bookInfo.publisher = "톨스토이 출판사";
bookArray.push(bookInfo);
bookInfo = new Object();
bookInfo.name = "홍길동전";
bookInfo.writer = "허균";
bookInfo.price = "300";
bookInfo.genre = "소설";
bookInfo.publisher = "허균 출판사";
bookArray.push(bookInfo);
bookInfo = new Object();
bookInfo.name = "레미제라블";
bookInfo.writer = "빅토르 위고";
bookInfo.price = "900";
bookInfo.genre = "소설";
bookInfo.publisher = "빅토르 위고 출판사";
bookArray.push(bookInfo);
//사람, 책 정보를 넣음
var totalInfo = new Object();
totalInfo.persons = personArray;
totalInfo.books = bookArray;
var jsonInfo = JSON.stringify(totalInfo);
console.log(jsonInfo); //브라우저 f12개발자 모드에서 confole로 확인 가능
alert(jsonInfo);
});
});
</script>
</head>
<body>
<br>
<br>
<a id="checkJson" style="cursor:pointer">확인</a>
</body>
</html>
이런 형식이 됩니다.
{
"persons":[
{"name":"송강호","age":"25","gender":"남자","nickname":"남궁민수"},
{"name":"전지현","age":"21","gender":"여자","nickname":"예니콜"}
],
"books":[
{"name":"사람은 무엇으로 사는가?","writer":"톨스토이","price":"100","genre":"소설","publisher":"톨스토이 출판사"},
{"name":"홍길동전","writer":"허균","price":"300","genre":"소설","publisher":"허균 출판사"},
{"name":"레미제라블","writer":"빅토르 위고","price":"900","genre":"소설","publisher":"빅토르 위고 출판사"}
]
}
완성된 JSON 데이터는 여기에서 (http://jsonlint.com/) 검증 및 정렬 해보시면 됩니다.
* 여기 아래부터는 제가 프로젝트에서 사용한 소스의 일부분 인데 나중에 다시 보기 위해 적었습니다.
위와 동일한 방식이지만 데이터 넣는 부분을 HashMap 처리 해 보았습니다.
간단한 방식은 위에 소스를 참고 해주세요.
일단 JavaScript에서 HashMap 처럼 사용하기 위해 함수를 하나 생성 하자요. (JSON 부분만 보실분은 확인 안하셔도 됩니다.)
HashMap = function(){
this.map = new Array();
};
HashMap.prototype = {
put : function(key, value){
this.map[key] = value;
},
get : function(key){
return this.map[key];
},
getAll : function(){
return this.map;
},
clear : function(){
this.map = new Array();
},
isEmpty : function(){
return (this.map.size() == 0);
},
remove : function(key){
delete this.map[key];
},
toString : function(){
var temp = '';
for(i in this.map){
temp = temp + ',' + i + ':' + this.map[i];
}
temp = temp.replace(',','');
return temp;
},
keySet : function(){
var keys = new Array();
for(i in this.map){
keys.push(i);
}
return keys;
}
};
HashMap에 값을 넣습니다
var channelInfoMap = new HashMap(); channelInfoMap.put(keyChannelId, channelImgType+"`"+channelType+"`"+channelTypeSeq); var connectionConfMap = new HashMap(); connectionConfMap.put(conn[i].id, cStatus+"`"+cDay+"`"+cHour);
그리고 생성한 HashMap를 가져와 데이터를 추출 하고 JSON 형식으로 만듭니다.
var channelInfoConf = channelInfoMap.getAll();
//채널 정보를 JSON 형식으로 생성
var channelArrayArg = new Array();
for(i in channelInfoConf){
var jsonArg = new Object();
jsonArg.name = i;
jsonArg.type = channelInfoMap.get(i).split("`")[0];
jsonArg.channelType = channelInfoMap.get(i).split("`")[1];
jsonArg.channelTypeSeq = channelInfoMap.get(i).split("`")[2];
channelArrayArg.push(jsonArg);
}
//커넥션 정보를 JSON 형식으로 생성
var connectionArrayArg = new Array();
var connectionVal = connectionMap.getAll();
for(i in connectionVal){
var jsonArg = new Object();
jsonArg.name = i;
jsonArg.from = connectionMap.get(i).split("`")[0];
jsonArg.to = connectionMap.get(i).split("`")[1];
jsonArg.status = connectionConfMap.get(i).split("`")[0];
jsonArg.day = connectionConfMap.get(i).split("`")[1];
jsonArg.hour = connectionConfMap.get(i).split("`")[2];
connectionArrayArg.push(jsonArg);
}
var totalAutoPlanInfo = new Object();
totalAutoPlanInfo.channelInfo = channelArrayArg;
totalAutoPlanInfo.connectionInfo = connectionArrayArg;
alert(JSON.stringify(totalAutoPlanInfo));
/* 아래와 같이 만들어 진다. 값은 뭐.... 넣은대로
{
"channelInfo":
[
{"name":"channelWindow2","type":"M","channelType":"10","channelTypeSeq":"1"},
{"name":"channelWindow3","type":"P","channelType":"07","channelTypeSeq":"1"}
],
"connectionInfo":
[
{"name":"con_31","from":"channelWindow1","to":"channelWindow2","status":"s","day":"1","hour":"1"},
{"name":"con_39","from":"channelWindow2","to":"channelWindow3","status":"s","day":"2","hour":"2"}
]
}
*/