簡體   English   中英

將Excel列映射到父子JSON

[英]Mapping Excel Columns to Parent-Child JSON

我有這樣的CSV輸入:

Column1,Column2,Column3,Column4,Column5
a,b,c,d,e
a,b,f,,
a,g,h,i,
j,k,l,,
j,k,m,n,
o,,,,

而且我正在嘗試將其轉換為符合此格式( http://bl.ocks.org/mbostock/raw/4063550/flare.json )的JSON輸出,以便可以利用d3.js可視化父級-子樹( http://bl.ocks.org/mbostock/4063570 )。

我希望像該示例一樣可視化我的數據,但是我沒有權重。 如果需要,我可以添加一個通用的一級父級。 只是想可視化樹。

最大深度始終是5。

我一直在用PHP做一些數組工作(在使用fgetcsv()閱讀之后),但是我無所事事並且可以使用一些幫助。

首選PHP或Javascript解決方案,因為這就是我可以通過工作計算機安裝程序使用的全部內容。 我非常感謝您的幫助!

聽起來您正在尋找樹狀結構,其中的數據如下所示:

          a            j      o
         / \          /
        b   g        k
       / \   \      / \
      c   f   h    l   m
     /         \        \
    d           i        n
   /
  e

如果是這樣,以下javascript代碼應該可以滿足您的要求:

var csv = //CSV CONTENT HERE
  , data = parseCSV(csv)
  , structure = toJSONStructure(data)
  , formattedForD3 = toNameChildFormat(structure)

console.log(formattedForD3)

function parseCSV(csv) {
    return csv.split('\n').slice(1).map(function(line) {
        return line.split(',')
    })
}

function toJSONStructure(data) {
    var structure = {}
    data.forEach(function(line) {
        var o = structure
        line.forEach(function(val) {
            if(val) o = o[val] = o[val] || {}
        })
    })
    return structure
}

function toNameChildFormat(structure) {
   return Object.keys(structure).map(function(key) {
       return {
           name:key,
           children:toNameChildFormat(structure[key])
       }
   })
}

JSFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM