2010-09-02 5 views
2

J'ai le javascript suivant que j'ai besoin de rendre dynamique.Aide avec la structure 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); 

je suppose une boucle est la meilleure façon d'aller de l'avant:

Je suis venu avec la structure JSON suivante:

[ 
    {"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"}} 
] 

Je pense que cette structure doit être améliorée. Quelqu'un peut-il suggérer une meilleure structure pour qu'il soit très facile pour moi d'extraire les données que je veux en extraire?

Répondre

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

De cette façon, vous pouvez faire data.length pour savoir combien de valeurs que vous avez et vous pouvez boucler un peu plus facile. Par exemple:

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

En utilisant votre exemple:

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

J'ai apporté les modifications nécessaires à la structure JSON, mais je n'arrive pas à la faire passer en boucle dans le javascript ci-dessus. – oshirowanen

+1

J'ai modifié ma réponse pour vous montrer une solution possible. Ce n'est en aucun cas le meilleur moyen de garder une trace de x et y, mais cela devrait fonctionner correctement pour ce dont vous avez besoin. –

+0

Semble fonctionner jusqu'à présent! Le tester maintenant. Merci – oshirowanen

2

Je ne vois pas que vous pouvez faire simple plus, à moins qu'il ya quelque chose de spécial sur les données qui permettrait des pièces répétées à être séparées d'une certaine façon.

+0

La raison pour laquelle je demande, parce que je suis de la difficulté à essayer de boucle à travers les données pour faire le javascript ci-dessus dynamique. – oshirowanen

+0

La raison pour laquelle vous rencontrez des difficultés est qu'il semble que vous utilisiez une clé unique (user1, user2, user3) comme clé pour les données associées. En créant uid et en le définissant à user1, vous avez maintenant un seul moyen de référencer n'importe quel utilisateur. –

1

Essayez quelque chose comme:

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

Ou, si vous voulez que vos utilisateurs ont 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} 
}} 

Rappelez-vous, tous les nombres en JavaScript sont des nombres à virgule flottante.

+1

Ce JSON ne serait pas très utile car vous ne pouvez pas lier les valeurs à un utilisateur spécifique. –

+0

Chaque paire de valeurs est pour un utilisateur spécifique, je ne pense pas que cela fonctionnera. – oshirowanen

+0

Dans votre deuxième exemple, est-il plus facile de faire une boucle pour que les données soient collées dans l'exemple javascript que j'ai donné plus haut? – oshirowanen

0

Je pense que vous pouvez essayer quelque chose comme ça, l'idée est de ColdFusion SerializeJson()

Je suppose que vos données sont comme une table

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

la structure json est

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

plus clair lecture

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

avec cette structure, nous savons que chaque varname.DATA [index] [0] est fait référence à USER

0

Vérifiez ce lien pour json encoding

Et pour l'instant votre valeur json devrait être encodée comme ceci

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

Désolé pas pour vous ....