I’ll elaborate a bit more on ChrisR awesome answer and bring images from his awesome reference.
A valid JSON always starts with either curly braces {
or square brackets [
, nothing else.
{
will start an object
:

{ "key": value, "another key": value }
Hint: although javascript accepts single quotes
'
, JSON only takes double ones"
.
[
will start an array
:

[value, value]
Hint: spaces among elements are always ignored by any JSON parser.
And value
is an object
, array
, string
, number
, bool
or null
:

So yeah, ["a", "b"]
is a perfectly valid JSON, like you could try on the link Manish pointed.
Here are a few extra valid JSON examples, one per block:
{} [0] {"__comment": "json doesn't accept comments and you should not be commenting even in this way", "avoid!": "also, never add more than one key per line, like this"} [{ "why":null} ] { "not true": [0, false], "true": true, "not null": [0, 1, false, true, { "obj": null }, "a string"] }