¿Existe una función rápida para convertir los objetos JSON recibidos a través jQuery getJSON
de un volcado de variable de cadena (con fines de seguimiento / depuración)?
¿Existe una función rápida para convertir los objetos JSON recibidos a través jQuery getJSON
de un volcado de variable de cadena (con fines de seguimiento / depuración)?
Respuestas:
Sí, JSON.stringify
se puede encontrar aquí , está incluido en Firefox 3.5.4 y superior.
Un stringifier JSON va en la dirección opuesta, convirtiendo las estructuras de datos JavaScript en texto JSON. JSON no admite estructuras de datos cíclicas, así que tenga cuidado de no dar estructuras cíclicas al stringifier JSON. https://web.archive.org/web/20100611210643/http://www.json.org/js.html
var myJSONText = JSON.stringify(myObject, replacer);
Puede usar console.log()
en Firebug o Chrome para obtener una buena vista de objetos aquí, como este:
$.getJSON('my.json', function(data) {
console.log(data);
});
Si solo desea ver la cadena, mire la vista de recursos en Chrome o la vista de red en Firebug para ver la respuesta de cadena real del servidor (no es necesario convertirla ... la recibió de esta manera).
Si desea tomar esa cadena y dividirla para verla fácilmente, hay una excelente herramienta aquí: http://json.parser.online.fr/
getJSON
fallará silenciosamente y tendrá dificultades para entender por qué no funciona: agregar .fail(function(jqxhr, status, error) { alert(status + ", " + error);})
.
Yo personalmente uso mucho el plugin jquery dump para volcar objetos, es un poco similar a la función print_r () de php Uso básico:
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"
)
}
*/
Es muy legible por humanos, también recomiendo este sitio http://json.parser.online.fr/ para crear / analizar / leer json, porque tiene colores agradables
Aquí está el código que utilizo. Debería poder adaptarlo a sus necesidades.
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>
algo a lo largo de esto?
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;
}