2010-09-02 175 views
2

我有以下javascript,我需要使動態。幫助JSON結構

data.addRows(2); 
data.setValue(0, 0, 'name goes here'); 
data.setValue(0, 1, value 1 goes here); 
data.setValue(0, 2, value 2 goes here); 
data.setValue(1, 0, 'name goes here'); 
data.setValue(1, 1, value 1 goes here); 
data.setValue(1, 2, value 2 goes here); 

我想一個循環是前進的最好辦法:我覺得這個結構需要改善

[ 
    {"User1":{"value1": 50.00,"value2": "100"}}, 
    {"User2":{"value1": 10.00,"value2": "20"}}, 
    {"User3":{"value1": 10.00,"value2": "20"}}, 
    {"User4":{"value1": 10.00,"value2": "20"}}, 
    {"User5":{"value1": 20.00,"value2": "40"}} 
] 

我想出了以下JSON結構。有人可以建議一個更好的結構,使我很容易提取我想從中提取的數據嗎?

回答

4
var dataset = [ 
    {uid: 'user1', value1: 50.00, value2: 100}, 
    {uid: 'user2', value1: 10.00, value2: 20}, 
]; 

這樣,你可以做data.length找出你有多少價值有,你可以循環更容易一點。

for(i = 0; i < dataset.length; i++) { 
    console.log(data[i].uid); 
} 

使用你的例子:例如

data.addRows(2); 
var l = dataset.length, i, x = 0, y = 0; 
for(i = 0; i < l; i++) { 
    data.setValue(y, x, dataset[i].uid); x++; 
    data.setValue(y, x, dataset[i].value1); x++; 
    data.setValue(y, x, dataset[i].value2); x=0; 
    y++; 
} 
+0

我已經對JSON結構進行了必要的修改,但似乎無法循環使用它來將它放到上面的javascript中。 – oshirowanen 2010-09-02 14:43:25

+1

我修改了我的答案,向您展示了一種可能的解決方案。這絕不是跟蹤x和y的最佳方法,但它應該適合您需要的工作。 – 2010-09-02 14:47:56

+0

似乎到目前爲止工作!現在測試它。謝謝 – oshirowanen 2010-09-02 14:56:37

2

我沒有看到你可以使它變得更簡單,除非對數據有特別的要求,允許重複的部分以某種方式分離出來。

+0

我之所以問這個問題,是因爲我試圖通過循環數據來使javascript動態變得很困難。 – oshirowanen 2010-09-02 14:33:06

+0

您遇到困難的原因是因爲它看起來像您正在使用唯一密鑰(user1,user2,user3)作爲關聯數據的關鍵字。通過創建uid並將其設置爲user1,現在您可以通過單一方式引用任何用戶。 – 2010-09-02 14:42:05

1

嘗試類似:

{"users": [ 
    {"value1": 50, "value2": 100}, 
    {"value1": 10, "value2": 20}, 
    {"value1": 10, "value2": 20}, 
    {"value1": 10, "value2": 20}, 
    {"value1": 20, "value2": 40} 
]} 

或者,如果你希望你的用戶的ID爲:

{"users": { 
    "userId1": {"value1": 50, "value2": 100}, 
    "userId2": {"value1": 10, "value2": 20}, 
    "userId3": {"value1": 10, "value2": 20}, 
    "userId4": {"value1": 10, "value2": 20}, 
    "userId5": {"value1": 20, "value2": 40} 
}} 

記住,所有數字在JavaScript的浮點數。

+1

這個JSON不會很有幫助,因爲你不能將值綁定到任何特定的用戶。 – 2010-09-02 14:31:52

+0

每個值對都是針對特定用戶的,我認爲這不會起作用。 – oshirowanen 2010-09-02 14:33:51

+0

在第二個示例中,是否更容易循環以將數據粘貼到上面給出的JavaScript示例中? – oshirowanen 2010-09-02 14:36:08

0

我想你可以嘗試這樣的事情,這個想法是從ColdFusion的SerializeJson()

我假設你的數據就像一個表

user  value1  value2 
------------------------------------ 
user1  50   100 
user2  10   20 
... 

的JSON結構是

{"COLUMNS":["USER","VALUE1","VALUE2"],"DATA":[["user1",50.0,100.0],["user2",10.0,20.0]]} 

更清晰的閱讀

{ 
    "COLUMNS": 
     [ 
      "USER", 
      "VALUE1", 
      "VALUE2" 
     ], 
    "DATA": 
     [ 
      [ 
       "user1", 
       50.0, 
       100.0 
      ], 
      [ 
       "user2", 
       10.0, 
       20.0 
      ] 
     ] 
} 

這種結構,我們知道,每varname.DATA [指數] [0]是指用戶

0

檢查此鏈接爲json encoding

而且現在你的json值應該像這樣編碼

{"id":8,"heading":"heading goes here","content":"&lt;p&gt;content goes here&lt;\/p&gt;"} 

對不起,對不起你....