Có một chức năng nhanh chóng để chuyển đổi các đối tượng JSON nhận được qua jQuery getJSON
một kết xuất biến chuỗi (cho mục đích truy tìm / gỡ lỗi) không?
Có một chức năng nhanh chóng để chuyển đổi các đối tượng JSON nhận được qua jQuery getJSON
một kết xuất biến chuỗi (cho mục đích truy tìm / gỡ lỗi) không?
Câu trả lời:
Có, bạn JSON.stringify
có thể tìm thấy ở đây , nó có trong Firefox 3.5.4 trở lên.
Trình định nghĩa chuỗi JSON đi theo hướng ngược lại, chuyển đổi cấu trúc dữ liệu JavaScript thành văn bản JSON. JSON không hỗ trợ cấu trúc dữ liệu tuần hoàn, vì vậy hãy cẩn thận để không cung cấp cấu trúc tuần hoàn cho trình định nghĩa chuỗi JSON. https://web.archive.org/web/20100611210643/http://www.json.org/js.html
var myJSONText = JSON.stringify(myObject, replacer);
Bạn có thể sử dụng console.log()
trong Firebug hoặc Chrome để có chế độ xem đối tượng tốt ở đây, như sau:
$.getJSON('my.json', function(data) {
console.log(data);
});
Nếu bạn chỉ muốn xem chuỗi, hãy xem chế độ xem Tài nguyên trong Chrome hoặc chế độ xem Mạng trong Firebug để xem phản hồi chuỗi thực tế từ máy chủ (không cần chuyển đổi nó ... bạn đã nhận được nó theo cách này).
Nếu bạn muốn lấy chuỗi đó và chia nhỏ để dễ xem, có một công cụ tuyệt vời ở đây: http://json.parser.online.fr/
getJSON
sẽ không hoạt động một cách âm thầm và bạn sẽ khó hiểu tại sao nó không hoạt động: add .fail(function(jqxhr, status, error) { alert(status + ", " + error);})
.
cá nhân tôi sử dụng plugin jquery dump rất nhiều để kết xuất các đối tượng, nó hơi giống với hàm print_r () của php Cách sử dụng cơ bản:
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"
)
}
*/
Nó rất dễ đọc cho con người, tôi cũng giới thiệu trang web này http://json.parser.online.fr/ để tạo / phân tích cú pháp / đọc json, vì nó có màu sắc đẹp
Đây là mã tôi sử dụng. Bạn sẽ có thể điều chỉnh nó cho phù hợp với nhu cầu của bạn.
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>"' + data[key] + '"</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>
cái gì đó dọc theo cái này?
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;
}