2015-06-11 66 views
3

我有一個像嵌套的HTML表,CSV

name,roll,section,hh 
a,1,k,34 
a,1,r,5 

你可以看到有重複,如「一」,在「名稱」數據平面CSV文件。我婉這些轉換爲HTML嵌套表像圖所示

|a 
--------------------- 
    |1 
    ------------------ 
     |k 
     --------------- 
      | 34 
     --------------- 
     | r 
     --------------- 
      | 5 
      --------- 

,所以我想我可以用JS將其轉換爲一個嵌套的JSON結構,然後在HTML中。

如何將這些數據轉換爲嵌套json,如下所示?

{ 
"name":"a" 
"roll":"1" 
"section":["k","r"], 
"hh":["34","5"] 
} 

}

是否有任何其他方式對這些CSV數據呈現給HTML嵌套列表? 請幫忙。

編輯: 對於JSON部分,我已經採用的js插件轉換CSV與$ .toJSON ($ csv.toObjects(數據)。)。但無法找到任何方法來製作像我所示的嵌套json。

+1

分享你的研究可以幫助每個人。告訴我們你試過了什麼,以及它爲什麼不符合你的需求。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參閱[如何問](http://stackoverflow.com/questions/how-to-ask) – Cerbrus

回答

0

給定的輸入在該CSV格式:

name,roll,section,hh 
a,1,k,34 
a,1,r,5 

的數據的每行表示從葉節點一個完整的路由。所以我們可以按行分割並將其累積到JSON對象。給你具有解析CSV文本如上到令牌的陣列這樣的功能:

var lines = $.csv.toArrays(csv); 

lines現在將成爲串的2D陣列如下:

[ 
    ['name','roll','section','hh'], 
    ['a','1','k','34'], 
    ['a','1','r','5'] 
] 

忽略所述第一線這是頭,遍歷每一行,並積累JSON對象:

var people = []; 
lines.slice(1).forEach(function(person){ 
    // Check if this person has already been added to the people list? 
    if (people.filter().length>0){ 
     // Update the existing person in the list 
     for (var p in people){ 
      if (people[p].name === person[0]){ 
       people[p].section.push(person[2]); 
       people[p].section.push(person[3]); 
      } 
     } 
    } 
    else{ 
     // Add a new one 
     people.push({ 
      name: person[0], 
      roll: person[1], 
      section: [person[2], 
      hh: [person[3]] 
     }); 
    } 
}); 
+0

謝謝.... :) –