JSON에서 문자열 변수 덤프로


82

jQuery getJSON(추적 / 디버깅을 위해) 통해받은 JSON 객체를 문자열 변수 덤프 로 변환하는 빠른 기능이 있습니까?


5
어리석은 질문-왜 이것이 스팸으로 신고 되었습니까?
ina

1
같은 이유로 내 질문이 반대 투표를 받고 때로는 사용자가 클릭에 부정확합니다!
Toni Leigh

답변:


121

예, 여기 에서 JSON.stringify찾을 수 있습니다 . Firefox 3.5.4 이상에 포함 되어 있습니다.

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

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

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

1
다음과 같이 데이터를 기록하려면 console.log (JSON.stringify (data, null)); 대체 함수가 필요하지 않으면 null을 전달하십시오!
elliotrock

29

console.log()Firebug 또는 Chrome에서 다음과 같이 좋은 개체보기를 얻을 수 있습니다 .

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

방금하려면 문자열을, 상기 보면 크롬에서 자원보기 또는 방화범 순보기 서버에서 실제 문자열 응답 볼 (변환 할 필요 ... 당신은이 방법을 받았다).

이 문자열을 쉽게 볼 수 있도록 분해하려면 여기에 훌륭한 도구가 있습니다. http://json.parser.online.fr/


오류 처리기를 추가하는 것이 유용합니다. 그렇지 않으면 getJSON자동으로 실패하고 작동하지 않는 이유를 이해하는 데 어려움을 겪을 것입니다. add .fail(function(jqxhr, status, error) { alert(status + ", " + error);}).
Skippy le Grand Gourou

13

나는 개인적으로 jquery 덤프 플러그인을 많이 사용하여 객체를 덤프하는데, 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을 작성 / 파싱 / 읽기 위해이 사이트 http://json.parser.online.fr/ 을 권장 합니다.


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

네, 알아요 ...하지만 대답을 찾을 때 문제가 문제와 관련이 있기 때문에 종종 대답에서 유용한 것을 찾습니다. P : 당신은 그냥 간단한 문제가있을 때이 플러그인은 실제로 비트 과잉이 될 수 있습니다
타이

4

내가 사용하는 코드는 다음과 같습니다. 필요에 맞게 조정할 수 있어야합니다.

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>

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;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.