Javascript Json Objects And Object Literals
JavaScript, JSON objects and object literals #
This is my crusade against the inconsiderate usage of the term JSON object in the context of JavaScript.
JSON and JSON objects #
JSON objects are defined as follows:
Where value
can be:
- a string (
"string"
) - a number (
42
) - another object (
{"key": ...}
) - an array (
[42, "string", {...}, ...]
) true
false
null
So this is a valid JSON string with a JSON object:
{"foo": "bar", "baz": 0}
Object literals in JavaScript #
Some people think, the object literals in JavaScript and JSON objects are the same and use the latter to describe the former. But that is wrong. The syntax for JSON objects is just a subset of the possible syntax for JavaScript objects. The object literal notation was just the model for JSON.
This is not a JSON object:
var foo = {foo: "bar", baz: 0};
It is an object literal. It would be only valid to talk about a JSON object in this case:
var foo = '{"foo": "bar", "baz": 0}';
because now here we have a string that contains JSON and a JSON object.
The JSON object in JavaScript #
Using the term JSON object for object literal notation seems to be even more wrong considering that
there actually exists a JSON object in JavaScript. At least in the newer browsers. It is an object,
available via the global variable JSON
and provides the methods
JSON.parse
to decode JSON data into JavaScript objectsJSON.stringify
to encode JavaScript values (primitive values, arrays and objects) into JSON data (if possible)
Conclusion #
Don’t use the term JSON object to describe JavaScript objects defined with object literal notation. It is misleading and confusing.