首页 > 构造json参数时key需要加引号吗

构造json参数时key需要加引号吗

例如下面这两段代码:
A:

{name:"dd",age:"16"}

B:

{"name":"dd","age":"16"}

如题,必须要还是最好要写成B的形式,平时没注意,两种都写过,也没报错,JS中不加也行,其他语言环境呢?哪种规范呢、?好像看过是:和关键字冲突的时候必须加,其他时候可以不加;如果json字符串的key缺少双引括起来,则json_decode会失败。还有其他理由吗?


json不是最好加不加,而是必须加,而且加的是双引号。
题主可以参考下面这个网站:http://www.bejson.com/


写成B最好, 通用,


需要加,
不清楚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/


前者是Javascript的对象字面量语法,后者是JSON,后者是前者的一个子集

如果就是写JS代码,那么只要风格统一,加不加都OK。我个人是倾向于不加的,因为表达数据的场景比较少,构建对象,声明方法的场景比较多,作为方法名来说不加引号比较有sense


加上去准没错!


我的理解是json必须加,
因为那意味着字符串对其他的映射。。

js的话是一个类的成员变量。。(雾)


json中的key 必须是用双引号包围的,并且要搞清楚JSON是字符串


JSON规范规定是必须要加上双引号的,而且作为不同系统之间的数据交换,大家最好都遵循标准,否则可能会出问题。


@mcfog 的说法是正确的,JSON是一种数据格式,实际上在JS中也是加上的,只是你容易和Object混淆而已。

【热门文章】
【热门文章】