2010-07-26 3 views
74

jQuery getJSON을 통해받은 JSON 객체를 문자열 변수 덤프로 변환하는 빠른 함수가 있습니까 (추적/디버깅 용도로)?JSON에서 문자열 변수 덤프

+5

바보 같은 질문 - 왜 이것이 스팸으로 신고 되었습니까? – ina

+0

내 질문이 다운 투표와 같은 이유로 사용자가 클릭에 부정확 한 경우가 있습니다. –

답변

109

예, JSON.stringify이 발견 될 수 herehttp://json.parser.online.fr/, 그것은 위의 파이어 폭스 3.5.4과의 included : 당신이 그 문자열을 쉽게 볼을 분해하려면

, 여기에 훌륭한 도구가있다.

JSON 문자열은 JavaScript 데이터 구조를 JSON 텍스트로 변환하는 반대 방향으로 이동합니다. JSON은 순환 데이터 구조를 지원하지 않으므로 순환 구조를 JSON 문자열 처리기에 제공하지 않도록주의하십시오.https://web.archive.org/web/20100611210643/http://www.json.org/js.html

var myJSONText = JSON.stringify(myObject, replacer); 
+0

파이어 폭스 3.5.4에 포함되어 있습니다 !!!!! – ina

+1

크롬에도 포함되어 있지만 json.org 링크에 (거대한) 404가 있습니다. –

+0

@Dean, 고맙습니다. 링크를 업데이트했습니다. – Anders

27

이 같은, 여기에 좋은 개체보기를 얻을 파이어 버그 나 크롬에서 console.log()을 사용할 수 있습니다 : 당신은 그냥 보기 문자열에 원하는 경우

$.getJSON('my.json', function(data) { 
    console.log(data); 
}); 

, 볼 수있는 Resource view in Chrome 또는 Net view in Firebug보고 서버에서 실제 문자열 응답 (그것을 변환 할 필요가 없습니다 ... 당신이 그것을 이런 식으로 받았다).

12

내가 개인적으로 개체를 덤프 jquery dump plugin을 많이 사용, PHP의 print_r의 유사의 비트() 함수는 기본 사용은 :

var obj = { 
      hubba: "Some string...", 
      bubba: 12.5, 
      dubba: ["One", "Two", "Three"] 
     } 
$("#dump").append($.dump(obj)); 
/* will return: 
Object { 
    hubba: "Some string..." 
    bubba: 12.5 
    dubba: Array ( 
      0 => "One" 
      1 => "Two" 
      2 => "Three" 
    ) 
} 
*/ 

그 읽을 수있는 매우 인간, 나 또한이 사이트를 추천 좋은 색상을 가지고 있기 때문에 json을 생성/파싱/읽기하기위한 것입니다.

+1

이것은 정말 훌륭하지만 다른 플러그인 (그리고 단지 디버그 용)을 설치해야합니다. – ina

+0

예, 알아요.하지만 메신저가 답을 찾고있을 때 저는 문제가 문제와 관련이 있기 때문에 종종 유용한 답을 찾습니다. 이 플러그인은 실제로 단순한 문제가있을 때 조금 과장 될 수 있습니다. P – Ties

5

다음은 내가 사용하는 코드입니다. 당신은 당신의 필요에 적응할 수 있어야합니다.

function process_test_json() { 
    var jsonDataArr = { "Errors":[],"Success":true,"Data":{"step0":{"collectionNameStr":"dei_ideas_org_Private","url_root":"http:\/\/192.168.1.128:8500\/dei-ideas_org\/","collectionPathStr":"C:\\ColdFusion8\\wwwroot\\dei-ideas_org\\wwwrootchapter0-2\\verity_collections\\","writeVerityLastFileNameStr":"C:\\ColdFusion8\\wwwroot\\dei-ideas_org\\wwwroot\\chapter0-2\\VerityLastFileName.txt","doneFlag":false,"state_dbrec":{},"errorMsgStr":"","fileroot":"C:\\ColdFusion8\\wwwroot\\dei-ideas_org\\wwwroot"}}}; 

    var htmlStr= "<h3 class='recurse_title'>[jsonDataArr] struct is</h3> " + recurse(jsonDataArr); 
    alert(htmlStr); 
    $(document.createElement('div')).attr("class", "main_div").html(htmlStr).appendTo('div#out'); 
    $("div#outAsHtml").text($("div#out").html()); 
} 
function recurse(data) { 
    var htmlRetStr = "<ul class='recurseObj' >"; 
    for (var key in data) { 
     if (typeof(data[key])== 'object' && data[key] != null) { 
      htmlRetStr += "<li class='keyObj' ><strong>" + key + ":</strong><ul class='recurseSubObj' >"; 
      htmlRetStr += recurse(data[key]); 
      htmlRetStr += '</ul ></li >'; 
     } else { 
      htmlRetStr += ("<li class='keyStr' ><strong>" + key + ': </strong>&quot;' + data[key] + '&quot;</li >'); 
     } 
    }; 
    htmlRetStr += '</ul >';  
    return(htmlRetStr); 
} 

</script> 
</head><body> 
<button onclick="process_test_json()" >Run process_test_json()</button> 
<div id="out"></div> 
<div id="outAsHtml"></div> 
</body> 
+0

이것은 나에게 도움이되었습니다. :)) – coding

2

function dump(x, indent) { 
    var indent = indent || ''; 
    var s = ''; 
    if (Array.isArray(x)) { 
     s += '['; 
     for (var i=0; i<x.length; i++) { 
      s += dump(x[i], indent) 
      if (i < x.length-1) s += ', '; 
     } 
     s +=']'; 
    } else if (x === null) { 
     s = 'NULL'; 
    } else switch(typeof x) { 
     case 'undefined': 
      s += 'UNDEFINED'; 
      break; 
     case 'object': 
      s += "{ "; 
      var first = true; 
      for (var p in x) { 
       if (!first) s += indent + ' '; 
       s += p + ': '; 
       s += dump(x[p], indent + ' '); 
       s += "\n" 
       first = false; 
      } 
      s += '}'; 
      break; 
     case 'boolean': 
      s += (x) ? 'TRUE' : 'FALSE'; 
      break; 
     case 'number': 
      s += x; 
      break; 
     case 'string': 
      s += '"' + x + '"'; 
      break; 
     case 'function': 
      s += '<FUNCTION>'; 
      break; 
     default: 
      s += x; 
      break; 
    } 
    return s; 
}