2012-03-27 12 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]); 
    } 

しかし、私取得(Firebugのコンソール):代わりに希望の

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がネストしたオブジェクトを表示する方法です。期待どおりにデータを扱うことができます。 Btw、あなたはJSON内にJSONを持っていません。あなたはJSONを持っているだけです(JSON内のJSONは '{" foo ":{{" bar \ ":42}"} 'というJSONを含む文字列です)。 –

+0

これは印刷の問題であり、解析の問題ではありません。 –

+0

古いインフォマーシャルを思い出させてくれる:「申し訳ありません、テネシー」 – lance

答えて

1

は、キーの値にJSON.stringifyを呼び出すしたいと思うような音値のペア。

あなたが戻ってJSON文字列への反復処理しているオブジェクトをオンにする JSON.stringifyを使用することができます
+0

+1これは私が探していたものです。 –

4

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のために!それは揺れる。 –