例如下面这两段代码:
A:
{name:"dd",age:"16"}
B:
{"name":"dd","age":"16"}
如题,必须要还是最好要写成B的形式,平时没注意,两种都写过,也没报错,JS中不加也行,其他语言环境呢?哪种规范呢、?好像看过是:和关键字冲突的时候必须加,其他时候可以不加;如果json字符串的key缺少双引括起来,则json_decode会失败。还有其他理由吗?
PHPz2017-04-10 14:53:02
前者是Javascript的对象字面量语法,后者是JSON,后者是前者的一个子集
如果就是写JS代码,那么只要风格统一,加不加都OK。我个人是倾向于不加的,因为表达数据的场景比较少,构建对象,声明方法的场景比较多,作为方法名来说不加引号比较有sense
伊谢尔伦2017-04-10 14:53:02
需要加,
不清楚js是否可以,在Python下是必须加的,否则报错
>>> import json
>>> a= '{name:"dd",age:"16"}'
>>> json.loads(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 381, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)
>>> a= '{"name":"dd","age":"16"}'
>>> json.loads(a)
{u'age': u'16', u'name': u'dd'}
因为json作为一种使用广泛的数据交换格式,既然是交换必然是多种语言之间,所以必须要加入。
json规范关于pair的描述
pair
string : value
json中对于string的描述
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.
字符串就是多个Unicode字符,使用双引号包裹。
规范来源http://json.org/