2013-05-14 68 views
0

我有這個代碼存儲數組中的數據。但我想要json格式的輸出。 目前,我可以將輸入數據轉換爲json,但我不確定如何更改此對象的代碼。 例如在線路代碼:如何以json格式編寫此代碼?

target = (children[p] || (children[p] = [])); 

target.push({value:item}); 

任何想法?

for (var i = 0, len = arry.length; i < len; ++i) { 
    var item = arry[i], 
     p = item.Parent, 
     target = []; 

    if(p == rootId) { 
     target = roots; 
    } 
    else {    
     target = (children[p] || (children[p] = []));   
    } 

    target.push({ value: item }); 

}

+1

假設你想要的東西是真實的ly [JSON](http://json.org/)(我不確定),那麼你應該使用JSON.stringify。 – 2013-05-14 16:34:02

+0

JSON是一種格式化協議,而不是數據結構...您是否問如何將其序列化爲JSON? – 2013-05-14 16:34:30

+0

「與JSON一起工作」令人難以置信地模糊。你想解決什麼問題? – SLaks 2013-05-14 16:35:02

回答

2

你可以通過調用JSON.stringify()序列的任意JavaScript對象到JSON字符串。

這可能是也可能不是你想要的。

+1

這不就是我們所說的代表嫖娼嗎? – 2013-05-14 16:37:40

+0

我的問題是目標是數組和目標上的代碼=(children [p] ||(children [p] = []));和target.push({value:item});適用於數組,但不適用於對象。 – user2335149 2013-05-14 16:38:13

+0

@FlorianMargaine:不;我很久以前就達到了限制。這是我回答問題的方式,同時明確表示問題是錯誤的。 – SLaks 2013-05-14 18:13:37

0

如果你想通過迭代一個JS對象,而不是一個數組,使相同的代碼工作,那麼你可能想這一點:

for (var key in obj) { 
    var item = obj[key]; 
     p = item.Parent, 
     target = []; 

    if(p == rootId) { 
     target = roots; 
    } 
    else {    
     target = (children[p] || (children[p] = []));   
    } 

    target.push({ value: item }); 
} 

如果你想從一個數組開始,但填寫一個對象,那麼也許你想這樣的:

for (var i = 0, len = arry.length; i < len; ++i) { 
    var item = arry[i], 
     p = item.Parent, 
     target = []; 

    if(p == rootId) { 
     target = roots; 
    } 
    else {    
     target = (children[p] || (children[p] = {}));   
    } 
    target.value = item; 
} 

我建議你閱讀對象和屬性的好MDN介紹:Working with objects