Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
88
rated 0 times [  94] [ 6]  / answers: 1 / hits: 36617  / 14 Years ago, wed, november 17, 2010, 12:00:00

According to Crockford's json.org, a JSON object is made up of members, which is made up of pairs.



Every pair is made of a string and a value, with a string being defined as:




A string is a sequence of zero or more
Unicode characters, wrapped in double
quotes, using backslash escapes. A
character is represented as a single
character string. A string is very
much like a C or Java string.




But in practice most programmers don't even know that a JSON key should be surrounded by double quotes, because most browsers don't require the use of double quotes.



Does it make any sense to bother surrounding your JSON in double quotes?



Valid Example:



{
keyName : 34
}


As opposed to the invalid:



{
keyName : 34
}

More From » json

 Answers
33

The real reason about why JSON keys should be in quotes, relies in the semantics of Identifiers of ECMAScript 3.



Reserved words cannot be used as property names in Object Literals without quotes, for example:



({function: 0}) // SyntaxError
({if: 0}) // SyntaxError
({true: 0}) // SyntaxError
// etc...


While if you use quotes the property names are valid:



({function: 0}) // Ok
({if: 0}) // Ok
({true: 0}) // Ok


The own Crockford explains it in this talk, they wanted to keep the JSON standard simple, and they wouldn't like to have all those semantic restrictions on it:




....



That was when we discovered the
unquoted name problem. It turns out
ECMA Script 3 has a whack reserved
word policy. Reserved words must be
quoted in the key position, which is
really a nuisance. When I got around
to formulizing this into a standard, I
didn't want to have to put all of the
reserved words in the standard,
because it would look really stupid.



At the time, I was trying to convince
people: yeah, you can write
applications in JavaScript, it's
actually going to work and it's a good
language. I didn't want to say, then,
at the same time: and look at this
really stupid thing they did! So I
decided, instead, let's just quote the
keys.

That way, we don't have to tell
anybody about how whack it is.



That's why, to this day, keys are quoted in
JSON.



...




The ECMAScript 5th Edition Standard fixes this, now in an ES5 implementation, even reserved words can be used without quotes, in both, Object literals and member access (obj.function Ok in ES5).



Just for the record, this standard is being implemented these days by software vendors, you can see what browsers include this feature on this compatibility table (see Reserved words as property names)


[#94933] Sunday, November 14, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
stacied

Total Points: 124
Total Questions: 84
Total Answers: 98

Location: Ivory Coast
Member since Sun, Mar 7, 2021
3 Years ago
;