Betrachten Sie die folgende verschachtelte JSON:JQuery JSON-in-JSON Parsen
{
"state": [
"Tennessee"
],
"more_data": [
{
"letters": {
"last": "e",
"first": "T"
}
}
]
}
ich die JSON in JavaScript in einer flachen Weise, dh root_key = Wert drucken möchten:
var my_json_str = "{\"state\":[\"Tennessee\"],\"more_data\":[{\"letters\":{\"first\":\"T\",\"last\":\"e\"}}]}";
console.log(my_json_str);
my_json = jQuery.parseJSON(my_json_str);
for (var key in my_json) {
console.log(key,":",my_json[key]);
}
Aber ich erhalten (Firebug-Konsole):
state : ["Tennessee"]
more_data : [Object { letters={...}}]
Statt der gewünschten:
state:["Tennessee"]
more_data:[{"letters":{"first":"T","last":"e"}}]
Wie behebe ich das?
Lösung - im Anschluss an Ihre Antworten:
var jsonStr = "{\"state\":[\"Tennessee\"],\"more_data\":[{\"letters\":{\"first\":\"T\",\"last\":\"e\"}}]}";
var jsonObj = JSON.parse(jsonStr);
for (key in jsonObj) {
console.log(key+':'+JSON.stringify(jsonObj[key]));
}
Welche gibt:
state:"Tennessee"
more_data:{"letters":{"first":"T","last":"e"}}
** Sie don‘ Ich muss etwas reparieren, es gibt nichts falsches ** (naja, es sei denn, Sie wollen es wirklich auf andere Weise drucken, aber warum?). So zeigt Firebug verschachtelte Objekte an. Sie können mit den Daten wie erwartet arbeiten. Übrigens, Sie haben kein JSON in JSON. Sie haben nur JSON (JSON in JSON wäre etwas wie '{" foo ":" {\ "bar \": 42} "}', d. H. Eine Zeichenfolge, die JSON enthält). –
Dies ist ein Druckproblem, kein Analyseproblem. –
Erinnert mich an die alten Infomercials ...: "Entschuldigung, Tennessee." – lance