2012년 4월 10일 화요일

자바스크립트 json오브젝트를 json스트링으로 변환하기

오브젝트를 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 를 사용하면 된다

댓글 없음:

댓글 쓰기