noob
noob

Reputation: 99

array and object confusion in json

what is the different between is

var json = [{
'id':1,
'name':'John'
}]

and

var json = {
'id':1,
'name':'John'
}

my understanding is that in code one json is an array, which means we can have multiple object which contains property of id and name. But for the second one it's an object. Is it?

and how about this one

var json = ['id':1,'name':'John']

compare to code one?

Upvotes: -1

Views: 133

Answers (3)

6502
6502

Reputation: 114599

JSON is a format, i.e. a way to encode Javascript objects to a sequence of characters.

Once you have a sequence of characters you can store it on disk or send it over a network and later rebuild the objects described in the sequence of characters.

You cannot encode every possible Javascript value in JSON, but only

  • strings
  • numbers (excluding NaN and infinity)
  • null
  • arrays
  • other objects (just the fields with values that can be encoded, not the constructor or methods)

Also, the data structure must be a tree. (You get an error if it has loops, and shared sub-trees are not detected and will be duplicated when rebuilding from JSON.)

Moreover JSON doesn't support is the presence of other fields in arrays (something that is possible in Javascript, because arrays are objects). For JSON, you have either an array or an object.

The values in your first two examples can be converted to JSON, but there are additional requirements in the format specifications. (E.g. object field names must be double quoted.)

Your last example instead is not a valid JSON string.

When you see "JSON object" or "JSON value" you must read it as "object encoded in JSON". JSON is a format, more or less like XML.

Upvotes: 1

jackieLin
jackieLin

Reputation: 1277

You understanding about code one and code two are correct. But however, the json syntax about code one and two is error. Because each json field must use double quotes, not single quotes. so code one and code two must be written like this:

[
    {
        "id": 1,
        "name": "John"
    }
]

and

{
    "id": 1,
    "name": "John"
}

Now code three's syntax is error! If you want to mean an array, it must be var json = []; json['id']=1; json['name']='John'; or an object var json={'id':1,'name':John'}

Upvotes: 2

Amit Joki
Amit Joki

Reputation: 59292

Nothing is valid JSON in your case.

The first one is an array of native javascript objects.

The second one is a javascript object.

The last one isn't valid and will throw error. It is syntactically wrong.

Use JSON.stringify() on javascript arrays or objects to make it a valid JSON.

Upvotes: 3

Related Questions