252

This is all you need for valid JSON, right?

["somestring1", "somestring2"]
4
  • 13
    That's a JSON array containing two strings, yes... is there more to that question? ;)
    – Town
    Commented Mar 14, 2011 at 0:39
  • I read something which contradicted what we're all agreeing on. So, I wanted the reality check there. Thanks! Commented Mar 14, 2011 at 1:18
  • 4
    Ah, I see! It's a shame you can't accept your own question as the answer :D
    – Town
    Commented Mar 14, 2011 at 10:30
  • :) Well, it's not just the answers that's fun. It's great people such as yourself that help make this site a fun success! Commented Mar 16, 2011 at 2:06

4 Answers 4

394

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:

left brace followed by a key string (a name that can't be repeated, in quotes), colon and a value (valid types shown below), followed by an optional comma to add more pairs of string and value at will and finished with a right brace

{ "key": value, "another key": value }

Hint: although javascript accepts single quotes ', JSON only takes double ones ".

[ will start an array:

left bracket followed by value, optional comma to add more value at will and finished with a right bracket

[value, value]

Hint: spaces among elements are always ignored by any JSON parser.

And value is an object, array, string, number, bool or null:

Image showing the 6 types a JSON value can be: string, number, JSON object, Array/list, boolean, and 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"]
}
4
  • 1
    Does JSON have to have double quotes? I tried to validate the OP's string above but with single quotes on jsonlint.com and it tells me it is invalid. But it's valid when using double quotes.
    – Ray
    Commented Sep 13, 2016 at 13:50
  • @Ray as usual, that doesn't have a simple yes or no answer, although I'd say it's mostly "yeah, just go with double quotes". json.org tells us only about using double quotes, and most places will probably follow that. However, here's a deeper investigation about it: stackoverflow.com/a/2275428/274502
    – cregox
    Commented Sep 14, 2016 at 22:17
  • Improve images for SO's dark theme, please.
    – carloswm85
    Commented Aug 27, 2020 at 11:14
  • @carloswm85 i'll leave it to you! feel free to edit the answer. 😘 (i don't own a desktop, don't know where to set the dark theme, and don't really care... 😏)
    – cregox
    Commented Aug 28, 2020 at 12:22
106

Your JSON object in this case is a list. JSON is almost always an object with attributes; a set of one or more key:value pairs, so you most likely see a dictionary:

{ "MyStringArray" : ["somestring1", "somestring2"] }

then you can ask for the value of "MyStringArray" and you would get back a list of two strings, "somestring1" and "somestring2".

2
  • 14
    The code example you posted is invalid, when you would try to parse that string as a json it'll throw an error/exception. The fact you say that JSON is always key/value pairs is also inherently wrong. Nothing in the JSON spec says you NEED to have key/value pairs. When talking about data transport indeed key/value pairs are the most useful structure but the string the OP posted is perfectly valid JSON: codebeautify.org/jsonviewer/92ac7b
    – ChrisR
    Commented May 7, 2014 at 9:28
  • 1
    I had API's on the brain, where you want to look up the value in an array based on a key. So it would be, for an un-named array, {"1":"somestring1", "2":"somestring2"}
    – PapaSmurf
    Commented Aug 10, 2014 at 23:27
47

Basically yes, JSON is just a javascript literal representation of your value so what you said is correct.

You can find a pretty clear and good explanation of JSON notation on http://json.org/

7
String strJson="{\"Employee\":
[{\"id\":\"101\",\"name\":\"Pushkar\",\"salary\":\"5000\"},
{\"id\":\"102\",\"name\":\"Rahul\",\"salary\":\"4000\"},
{\"id\":\"103\",\"name\":\"tanveer\",\"salary\":\"56678\"}]}";

This is an example of a JSON string with Employee as object, then multiple strings and values in an array as a reference to @cregox...

A bit complicated but can explain a lot in a single JSON string.

Not the answer you're looking for? Browse other questions tagged or ask your own question.