JSON.parse()是否需要双引号? [英] Does JSON.parse() require double quoting?

查看:297
本文介绍了JSON.parse()是否需要双引号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Firefox 3.5b4.

I'm using Firefox 3.5b4.

此警报[对象对象],[对象对象]:

This alerts [object Object],[object Object]:

var jsonString = '[{"foo": "one", "bar": 1}, {"foo": "two", "bar": 2}]';
var jsonObjects = JSON.parse(jsonString);
alert(jsonObjects);

这会提醒一个空字符串,即jsonObjects为空.

This alerts an empty string, i.e. jsonObjects is null.

var jsonString = "[{'foo': '1', 'bar': 2}, {'foo': '3', 'bar': 4}]";
var jsonObjects = JSON.parse(jsonString);
alert(jsonObjects);

同样,对于未加引号的属性名称,即{foo:'1',bar:2}.

Likewise for unquoted property names, i.e. {foo: '1', bar: 2}.

这是怎么回事?我是否遗漏了一些明显的内容,或者是否存在关于使用JSON.parse进行双引号和单引号的规则?这三个版本都可以与eval一起正常使用.

What's going on? Am I missing something obvious, or is there a rule about double and single quoting with JSON.parse? All three versions work OK with eval.

推荐答案

JSON标准要求使用双引号.

The JSON standard mandates double quotes.

请记住,JSON不仅是编写JS对象".这是一个非常严格的语法,碰巧也可以作为JS对象读取.并非每种JS有效语法都是有效的JSON.实际上,您的示例并不是真正有效的JSON,因为它是一个对象数组,而标准规定了顶部构造必须是一个对象.

Remember that JSON isn't just "write a JS object". It's a very strict syntax that happens to be also readable as a JS object. Not every JS-valid syntax is valid JSON. In fact, your example ins't really valid JSON, since it's an array of objects while the standard specifies that the top construct MUST be an object.

当然,大多数JSON解析器都更加灵活,允许使用非标准选项(例如单引号).但不要依赖于此.

Of course, most JSON parsers are more flexible, allowing for non-standard options (like single quotes); but don't rely on that.

这篇关于JSON.parse()是否需要双引号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆