admin管理员组文章数量:1196980
Why does JSON only allow a string
to be a key of a pair? Why not other types such as null
, number
, bool
, object
, array
? Considering JSON is tightly related with JavaScript, could I conclude the reason from JavaScript specification (ECMA-262)? I'm totally a newbie to JavaScript, could you help me to point it out.
Why does JSON only allow a string
to be a key of a pair? Why not other types such as null
, number
, bool
, object
, array
? Considering JSON is tightly related with JavaScript, could I conclude the reason from JavaScript specification (ECMA-262)? I'm totally a newbie to JavaScript, could you help me to point it out.
- 2 I wouldn't say JSON is part of JavaScript. Its data structures are based on object and array literal notation found in JavaScript, but its existence is independent of ECMA-262. – user1106925 Commented Feb 16, 2012 at 2:28
3 Answers
Reset to default 13The JSON format is deliberately based on a subset of JavaScript object literal syntax and array literal syntax, and JavaScript objects can only have strings as keys - thus JSON keys are strings too. (OK, you can sort of use numbers as JavaScript object keys, but really they get converted to strings.)
Note that the point of JSON is that it is a string representation of data to allow easy exchange between programs written in different languages running on different machines in different environments. If you wanted to use an object as a key then that object would in turn have to be somehow represented as a string for transmission, but then the receiving language would need to be able to use objects as keys and that would mean you'd need a limited subset of JSON for those languages which would just be a mess.
"Considering JSON is a part of JavaScript"
No, it isn't. Newer browsers provide methods for creating and parsing JSON, but they're not part of the language as such except that JSON is a string format and JavaScript can do strings. JSON is always a string representation - it has to be parsed to create an object for use within JavaScript (or other languages) and once that happens JavaScript (or the other languages) treat the resulting object the same as any other object.
(Note also that a particular bit of JSON doesn't necessarily have any keys at all: it could just be an array, like '["one","two","three"]'
.)
Main reason according to the discoverer of JSON
representation is,
while parsing JSON data, there is a chance/possibility that, key you are using to refer a value might be a reserved word in your parsing language.
Refer this talk by Douglas Crockford, who is the discoverer of JSON representation.
Example :
{
id: 1234,
name: "foo",
do: "somthing"
}
Since JSON is a cross language compatibility, We can use this data set in many languages. But, the word do
is a keyword in Javascript
. It will end up in syntax error while parsing.
Because that is the way the specification was written.
本文标签: javascriptWhy JSON allows only string to be a keyStack Overflow
版权声明:本文标题:javascript - Why JSON allows only string to be a key? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738487183a2089489.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论