2016-11-24 11 views
0

でノードのJSを使用してJavaScriptでネストされたJSONファイルを読んで、私は複雑な、ネストされたJSONファイルで作業されています:以下に示すような単純なキー - >値のペアの形式

更新::ネストされたJSONファイルのスニペット(例)

{ 
    "sample": { 
     "someitem": { 
      "thesearecool": [ 
       { 
        "neat": "wow" 
       }, 
       { 
        "neat": "tubular" 
       } 
      ] 
     }, 
     "coolcolors": [ 
      { 
       "color":"red", 
       "hex": "ff0000" 
      }, 
      { 
       "color":"blue", 
       "hex":"0000ff" 
      } 
     ] 
    } 
} 

このJSONファイルのすべての値をトラバースしたいと思います。 ネストされたJSONを簡単で読みやすいJSON形式(NPMパッケージ→フラットパネル、フラットなど)にするために、多くのnpm nodejsパッケージを試しました。

この問題を解決するのにお手伝いをします。いくつか例を挙げて解決策を挙げてください。

+0

ネストされたJSONは表示されません。注意JSONは、JavaScriptオブジェクト/プリミティブのテキスト表現です。したがって、ネストされたJSONを持つためには、 '{" json ":" {\ "key \":\ "value \"} "}'のようになります。子オブジェクト/プロパティを意味しますか? –

+0

私はあなたが何を言いたいのか理解していると思います。私は組織データを投稿できません。単純なキーの値のペアで、ネストされたjsonファイルを読み込む方法を教えてください。 – deraazSk

答えて

1

ええ、それは再帰の良い問題です。 したがって、一般的な考え方はforループを持つ関数です。

2つのことが起こる可能性があります。どちらかが値であれば、それを印刷します。それはオブジェクトなので、そのオブジェクトを同じ関数に置きます。

<div id="log"></div> 
<script> 
var data = { 
"sample": { 
    "someitem": { 
     "thesearecool": [ 
      { 
       "neat": "wow" 
      }, 
      { 
       "neat": "tubular" 
      } 
     ] 
    }, 
    "coolcolors": [ 
     { 
      "color":"red", 
      "hex": "ff0000" 
     }, 
     { 
      "color":"blue", 
      "hex":"0000ff" 
     } 
    ] 
} 
}; 

function readAllJson(data, level) { 
    var resultString = ''; 
    for(var i in data) { 
    var type = typeof data[i]; 
    switch(type) { 
     case 'object': 
     resultString += indent(level) + i +':<br/>'+ readAllJson(data[i], level + 1); // recursion 
     break; 
     default: 
     resultString += indent(level) + i +': '+ data[i] + '<br/>'; 
     break; 
    } 
    } 
    return resultString; 
} 
function indent(level) { 
    var result = ''; 
    for(var i=0; i<level; i++) { 
    result += '&nbsp;'; // HTML space character 
    } 
    return result; 
} 
window.onload = function() { 
    var log = document.getElementById('log'); 
    var result = readAllJson(data, 0); 
    log.innerHTML = result; 
} 
</script> 
+0

@ Emmanuel、あなたの決議コメントをありがとう。しかし、ネストされたJsonの値を繰り返し処理するための簡単な方法をいくつか教えてください。 注:私は本格的なJavaScriptのコーディングを使用しています。したがって、HTMLタグまたはScriptタグの内部にないいくつかの例を投稿すると素晴らしいでしょう。 純粋なjavascriptの例が必要です。 – deraazSk

+0

再帰は困難です。それは直感的ではありません。通常、物事は後方に起こります(最初に処理されるものは最後に印刷されることが多い)ので、説明するのは簡単ではありません。あなたが私に何を求めているのか分かりません。あなたが期待する最終結果を具体的に教えてください。それに向けて努力しましょう。 –

関連する問題