2016-08-26 11 views
0

私は2つの質問の1つを持っています。どうすればJavaScriptのJSON文字列データ構造を操作できますか?d3.jsで使用するためのjson文字列操作

[ 
    { 
     "Name":"A170", 
     "Values":{ 
     "Level 1":1, 
     "Level 2":22, 
     "Level 3":22, 
     "Level 4":1 
     } 
    }, 
    { 
     "Name":"A220", 
     "Values":{ 
     "Level 1":2, 
     "Level 2":1, 
     "Level 3":1, 
     "Level 4":1 
     } 
    } 
] 

代わりにこの構造を取得しますか?

[ 
    { 
     "Name":"A170", 
     "Level 1":1, 
     "Level 2":22, 
     "Level 3":22, 
     "Level 4":1 
    }, 
    { 
     "Name":"A220", 
     "Level 1":2, 
     "Level 2":1, 
     "Level 3":1, 
     "Level 4":1 
    } 
] 
また、d3グループ化されたデータチャートコードを変更して、最初のデータ構造で動作させる方法もあります。ここでは、これまで2番目の(望ましい)データ構造でうまく動作しています: http://jsbin.com/tutigaxevo/edit?js,outputすべての助けに感謝します。私はJSの人ではない。

+0

あなたが本当に文字列形式でデータを持っているか、それがオブジェクト/配列ですか? –

+0

私はそれがオブジェクト配列だと信じています。 – konrad

答えて

1

このようにJSON文字列データ構造を操作することができます。

var myJson = [ 
 
    { 
 
     "Name":"A170", 
 
     "Values":{ 
 
     "Level 1":1, 
 
     "Level 2":22, 
 
     "Level 3":22, 
 
     "Level 4":1 
 
     } 
 
    }, 
 
    { 
 
     "Name":"A220", 
 
     "Values":{ 
 
     "Level 1":2, 
 
     "Level 2":1, 
 
     "Level 3":1, 
 
     "Level 4":1 
 
     } 
 
    } 
 
]; 
 

 
myJson = myJson.map(function(value) { 
 
var tempObj = value; 
 
    Object.keys(value).forEach(function(key){ 
 
     if (typeof value[key] === 'object') { 
 
     Object.keys(value[key]).forEach(function(val) { 
 
      tempObj[val] = value[key][val]; 
 
     }); 
 
     delete tempObj[key]; 
 
     } 
 
    }) 
 
return tempObj; 
 
}); 
 

 
console.log(myJson);

+0

これはJS Binで私にとってはうまくいかないようです。http://jsbin.com/hopotovuhi/edit?js,console – konrad

+0

うまくいきました。私はちょうどチェックした。 imgのスクリーンショットを確認してください。https://s3.postimg.org/mk5zbyaxf/js_BIn.png –

+0

[オブジェクトオブジェクト]は何を表していますか?はい、あなたは正しいです。そのうまく動作します。有難うございます。 – konrad