考虑以下嵌套JSON:JQuery的JSON-内-JSON解析
{
"state": [
"Tennessee"
],
"more_data": [
{
"letters": {
"last": "e",
"first": "T"
}
}
]
}
我想打印在JavaScript中JSON以平坦的方式,即,root_key =值:
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]);
}
但我得到(萤火虫控制台):
state : ["Tennessee"]
more_data : [Object { letters={...}}]
代替所需的:
state:["Tennessee"]
more_data:[{"letters":{"first":"T","last":"e"}}]
我该如何解决这个问题?
解决方案 - 以下答案:
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]));
}
其中给出:
state:"Tennessee"
more_data:{"letters":{"first":"T","last":"e"}}
**你不”不必修理任何东西,没有错误**(呃,除非你真的想以不同的方式打印它,但是为什么?)。这就是Firebug显示嵌套对象的方式。您可以按照预期使用数据。顺便说一句,你没有JSON内的JSON。你只需要JSON(JSON中的JSON就像'{“foo”:“{\”bar \“:42}”}',即包含JSON的字符串)。 – 2012-03-27 15:17:17
这是一个打印问题,而不是解析问题。 – 2012-03-27 15:17:18
让我想起以前的电视购物节目......:“对不起,田纳西州。” – lance 2012-03-27 15:17:49