2015-12-17 55 views
1

我有以下的JSON數據結構:如何JSON轉換

var data = <%=request.getAttribute("jsondata")%>; 

這就是我的data

[ 
    { 
     "name": "User I/O" 
    }, 
    { 
     "key": "61410583140000" 
    }, 
    { 
     "value": "125" 
    }, 
    { 
     "name": "User I/O" 
    }, 
    { 
     "key": "61410583200000" 
    }, 
    { 
     "value": "184" 
    }, 
    ... 
] 

現在我想有這樣的:

[ 
    //Squared brackets!! 
    [key,value] 
    [key,value] 
    [key,value] 
] 

什麼是轉換的正確代碼?

回答

2

這裏有你想要的東西 - 編輯:刪除不必要的過濾器,減少正在忽略「名稱」項的照顧。

data.reduce(function(a,b){ 
       if (b.key) { 
        a.push(b.key); 
       } 
       else if (b.value){ 
         var key = a.pop(); 
         a.push([key, b.value]); 
       } 
       return a; 
      }, []); 

這將返回一個這樣的數組 -

[[61410583140000,125],[61410583200000,184]] 
+0

我得到「令牌上的語法錯誤」>「,刪除此令牌」:/ – farahm

+0

我更新了代碼,請立即嘗試。這個錯誤的原因是我使用了瀏覽器不支持的[Arrow功能](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions)。無論如何,這是多餘的。 – hazardous

1
var result = []; 
    for(var i in json_data) 
     result.push([i, json_data [i]]); 

這應該工作完全正常

+0

它使像[[0,對象],[1,對象],[2,對象]];但是我怎麼能得到像[[Object,Object],[Object,Object],[Object,Object]]; ? – farahm