2012-03-27 101 views
1

考慮以下嵌套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"}}] 

我該如何解決這個問題?

解決方案 - 以下答案:

http://jsfiddle.net/wrAUB/

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"}} 
+3

**你不」不必修理任何東西,沒有錯誤**(呃,除非你真的想以不同的方式打印它,但是爲什麼?)。這就是Firebug顯示嵌套對象的方式。您可以按照預期使用數據。順便說一句,你沒有JSON內的JSON。你只需要JSON(JSON中的JSON就像'{「foo」:「{\」bar \「:42}」}',即包含JSON的字符串)。 – 2012-03-27 15:17:17

+0

這是一個打印問題,而不是解析問題。 – 2012-03-27 15:17:18

+0

讓我想起以前的電視購物節目......:「對不起,田納西州。」 – lance 2012-03-27 15:17:49

回答

1

聽起來像是你將要調用JSON.stringify對鍵的值值對。

+0

+1很好,這就是我一直在尋找的東西。 – 2012-03-27 15:30:45

4

您可以使用JSON.stringify把你遍歷對象轉化成JSON字符串:

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

看到它在行動上的jsfiddle:http://jsfiddle.net/hEvFr/

+0

+1對於jsFiddle!它岩石。 – 2012-03-27 15:30:22