JSON属性名引号的问题

lh8287 2007-11-05 10:07:34
我看到的JSON例子一般是这样的:
var obj = {myname: "roger"};
很容易理解.

但是为什么会有这种写法:
var obj = {"myname": "roger"};
属性名加引号是什么意思? 查了半天资料也没查出来.

我下载了几个C#的JSON解析器都会使用第二种写法, 如果我把第一种写法传给解析器会报JSON字符串异常.

一般来说加"是表示这个字符串中可能有空格, 比如"Program Files", 但是属性名中间不能加空格吧.

大家来说说.
...全文
259 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sou13 2008-10-28
  • 打赏
  • 举报
回复
var ss={"id":{"@name": "编号","#text": "1"},"name":{"@name": "单位名称","#text": "武汉市地方税务局"}};
怎么读里面直接量的@name值
lh8287 2007-11-05
  • 打赏
  • 举报
回复
加引号的具体原因未知, 但是可以从这个例子看出最好是使用带引号的属性名.
http://www.json.org/json2.js
var aa = {"myname":"Roger"};
JSON.stringify(aa);

返回的结果是"{\"myname\":\"Roger\"}"

另外好像一个对象的toJSONString方法也必须是包含了json.js之后才能有的, 而默认是没有的.
lh8287 2007-11-05
  • 打赏
  • 举报
回复
我仔细看了楼上提供的链接.
里面其实也是会交替着出现带引号的属性名和不带引号的.

比较奇怪.
s_liangchao1s 2007-11-05
  • 打赏
  • 举报
回复
http://blog.csdn.net/stonezhuzisgu/archive/2007/09/05/1772921.aspx
讲解
lh8287 2007-11-05
  • 打赏
  • 举报
回复
终于找到了为什么属性名要加引号:

因为可以这么写:
var aa = {"my name" : "Roger"};

用的时候不能这么用: aa.my name, 这样肯定是不行的.

应该这么用aa["my name"], 属性在这里也相当于Indexer来用.
呵呵
Javascript 真是灵活啊.

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧