2010-07-26 84 views
74

是否有一個快速函數將通過jQuery getJSON收到的JSON對象轉換爲字符串變量轉儲(用於跟蹤/調試目的)?JSON到字符串變量轉儲

+5

愚蠢的問題 - 爲什麼這被標記爲垃圾郵件? – ina 2012-03-15 13:03:34

+0

出於同樣的原因我的問題得到了反對票,有時用戶的點擊不準確! – 2015-10-25 16:53:51

回答

109

是,JSON.stringify,可以發現here,這是在Firefox 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

它包含在Firefox 3.5.4中!!!!! – ina 2010-07-26 14:00:48

+1

它也包含在chrome中,但是你在json.org鏈接上有一個(巨大的)404鏈接 – 2012-05-23 00:03:35

+0

@Dean,謝謝,我更新了鏈接。 – Anders 2012-05-23 19:24:15

27

您可以使用console.log()在Firebug或Chrome在這裏得到很好的對象視圖,就像這樣:

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

如果你只是想視圖字符串,看看Resource view in ChromeNet view in Firebug看來自服務器的實際字符串響應(不需要轉換它......您以此方式接收它)。

如果你想利用該字符串和打破它,方便查看,有一個很好的工具在這裏:http://json.parser.online.fr/

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" 
    ) 
} 
*/ 

它非常可讀的,我也推薦這個網站http://json.parser.online.fr/創建/解析/閱讀json,因爲它有很好的顏色

+1

這真的很棒,但它需要安裝另一個插件(僅用於調試) – ina 2010-07-26 14:00:12

+0

是啊,我知道...但是當我在尋找答案時,我經常在答案中找到一些有用的東西,因爲我的問題與問題有關。這個插件可能確實有點矯枉過正,當你有一個簡單的問題:P – Ties 2010-07-26 14:11:49

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 2013-10-01 17:09:21

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; 
}