2017-08-30 13 views
0

を作成するためのJSONにファイルを変換する:私のようにJSONツリー階層にこれを変換したい構造のようなツリーを取得するようにCSVが、私は形式のCSVファイル持っD3カテゴリツリー

"","Sequence","Paths","sequence_length" 
"1","Social -> Social -> Social -> Social -> Social -> Social -> Social -> Social",29,8 
"2","Social -> Social -> Social -> Social -> Social -> Social -> Social",30,7 
"3","Social -> Social -> Social -> Social -> Social -> Social",40,6 
"4","Social -> Social -> Social -> Social -> Social",71,5 
"5","Social -> Social -> Social -> Social",156,4 
"6","Social -> Social -> Social",273,3 
"7","Social -> Social -> SEO",40,3 
"8","Social -> Social",729,2 
"9","Social -> SEO -> Social",51,3 
"10","Social -> SEO",180,2 
"11","Social -> SEM",56,2 

を次のとおりです。

{ 
"name": "Social", 
"children": [{ 
    "name": "Social", 
    "children": [{ 
     "name": "Social", 
     "children": [{ 
      "name": "Social", 
      "children": [{ 
       "name": "Social", 
       "children": [{ 
        "name": "Social", 
        "children": [{ 
         "name": "Social", 
         "children": [{ 
          "name": "Social", 
          "Path": 29 
         }] 
        }] 
       }] 
      }] 
     }] 
    }] 
}] 
} 

ここで、各タッチポイントは、各行のCSVファイルの - >で表される「ソーシャル」は前のノードの子を表し、パスは最後のノードに追加されます。

私は

data.forEach(function(d){ 
var x = d.Sequence.split(' -> '); 

ように、1つのアレイに社会の物事を分割しようとすると、その後it.Thanksで私を助けてくださいJSON.Could誰に解析するために、このXを使用しています!

+0

だからあなたはすでにそれぞれが文字列である 'Sequence'プロパティを持つオブジェクトの配列です' data'を、オブジェクトするにはCSVファイルを変換することができましたか? – trincot

答えて

0

私は最初の行(csvの頭ではありません)のためだけに行いました。結果の例のように、私はあなたが望むことをしていると思います。

これで、アイテムの配列を作成し、それぞれをparseItemに渡すだけです。注意:最終結果はオブジェクトではなく、配列です。

それが本当に必要な、しかし、私はそれ再帰関数

すべて.innerHTML行われていない...だけで起こってwha't示すことです。必要に応じてこれらの行を削除します。

あなたはここからそれを取ることができますか?

<div id="log"></div> 
<hr/> 
<div id="result"></div> 
<script> 
    var myitem = ["1", "Social -> Social -> Social -> Social -> Social -> Social -> Social -> Social", 29, 8]; 

    function parseItem(item) { 
     // var id = item[0]; 
     var paths = item[1]; 
     var value = item[2]; 
     // var length = item[3]; 
     var splitPath = paths.split(' -> '); 

     var threeDpath = path2tree(splitPath, value); 
     return threeDpath; 

    } 

    // recursive function 
    function path2tree(paths, value) { 
     // for testing and trying to understand what happens 
     document.getElementById('log').innerHTML += JSON.stringify(paths) + '<br/>'; 

     if (paths.length == 1) { // this will only be true the last time 
      return [{ 
       "name": paths[0], 
       "Path": value 
      }]; 
     } else { 
      // splice paths[0], send the rest to the recursive function 
      var path = paths.splice(0, 1); 
      return [{ 
       "name": path[0], 
       "children": path2tree(paths, value) 
      }]; 
     } 
    } 

    window.onload = function() { 
     var threeDpath = parseItem(myitem); 
     document.getElementById('result').innerHTML = JSON.stringify(threeDpath); 
    } 
</script> 
関連する問題