오브젝트를 json 스트링으로 변환하는게 필요해서 검색을 좀 해봤는데...
오브젝트 내 오브젝트에 대한 처리나 array/dic 의 구분에 따른 처리가 안되어있는 소스 하나를 여러 블로그에서 서로 퍼가기로 돌려쓰는 결과만 나오더라
더 찾는것보다 직접 만드는게 더 빠를듯하여 만들어봤다.
function objectToJSONString(object) {
if (object == null) return "";
var isArray = (object.join!=null&&object.pop!=null&&object.push!=null&&object.reverse!=null&&object.shift!=null&&object.slice!=null&&object.splice!=null);
var results = [];
for (var i in object) {
var value = object[i];
if (typeof value == "object") {
results.push((isArray ? "" : '"'+i.toString() + "\":") + this.objectToJSONString(value));
}
else if(value)
results.push((isArray ? "" : '"'+i.toString() + "\":") + (typeof value == "string"? "\"" + value + "\"" : value));
}
return (isArray ? "[" : "{") + results.join(",") + (isArray ? "]" : "}");
}
사용(테스트)은
var a = {test: "asdf", test2: [11,12,13,"14","15",16], test3: {aaa:"aa",bbb:"bb"}};
var str = objectToJSONString(a);
alert(str);
이런식으로...
스트링으로 된 json문자열을 오브젝트로 바꾸는거야 뭐...
function jsonToObject(object) {
var obj;
try {
obj = eval("("+json+")");
}
catch(err) {
obj = {};
}
return obj;
}
이렇게 하면 되겠다.
이젠 JSON 이라는 오브젝트가 생겨서
JSON.stringfy 와 JSON.parse 를 사용하면 된다
댓글 없음:
댓글 쓰기