oshirowanen
oshirowanen

Reputation: 15925

Help with JSON structure

I have the following javascript which I need to make dynamic.

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); 

I guess a loop is the best way to go forward:

I have come up with the following json structure:

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

I think this structure needs improving. Can someone please suggest a better structure to make it very easy for me to extract the data I want to extract from this?

Upvotes: 1

Views: 157

Answers (5)

Harsh Baid
Harsh Baid

Reputation: 7249

Check this link for json encoding

And for now your json value should be encoded like this

{"id":8,"heading":"heading goes here","content":"<p>content goes here<\/p>"}

Sorry not for you....

Upvotes: 0

tsurahman
tsurahman

Reputation: 1912

I think you can try something like this, the idea is from ColdFusion SerializeJson()

I assume your data is like a table

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

the json structure is

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

more clear reading

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

with this structure, we know that every varname.DATA[index][0] is refers to USER

Upvotes: 0

Angelo R.
Angelo R.

Reputation: 2341

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

That way you can do data.length to figure out how many values you have and you can loop a bit easier. For example:

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

Using your example:

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++;
}

Upvotes: 4

Anthony Mills
Anthony Mills

Reputation: 8784

Try something like:

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

Or, if you want to have your users have IDs:

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

Remember, all numbers in JavaScript are floating-point numbers.

Upvotes: 1

AHungerArtist
AHungerArtist

Reputation: 9579

I don't see that you could make it anymore simple, unless there's something special about the data that would allow repeated parts to be separated out in some fashion.

Upvotes: 2

Related Questions