我想清楚地了解Javascript对象和JSON字符串之间的基本区别。
假设我创建了以下JS变量:
var testObject = {one: 1,"two":2,"three":3};
Q1。 密钥/属性名称在带/不带引号的情况下均有效吗?(例如"one" : 1)
"one" : 1
如果是,有什么区别?
问题2:如果我使用转换上述对象JSON.stringify(testObject),原始JS对象和JSON有什么区别?
JSON.stringify(testObject)
我觉得他们几乎一样。请详细说明。
问题3:对于解析JSON字符串,是否建议使用以下方法?
var javascriptObj = JSON.parse(jSonString);
密钥/属性名称在带引号和不带引号的情况下均有效吗?
你需要使用对象的文字符号时放在引号的关键唯一的一次,其中关键包含特殊字符(if,:,-等)。值得注意的是,JSON中的密钥 必须 用 双 引号引起来。
if
:
-
如果使用将上述对象转换为JSON var jSonString = JSON.stringify(testObject);,两者(JS obj和JSON)之间有什么区别?
var jSonString = JSON.stringify(testObject);
JSON是一种数据交换格式。这是一个标准,它描述了如何在字符串中表示有序列表和无序列图,字符串布尔值和数字。就像XML和YAML是在语言之间传递结构化信息的一种方式一样,JSON也是如此。另一方面,JavaScript对象是物理类型。就像PHP数组,C ++类/结构一样,JavaScript对象是JavaScript内部的一种类型。
这是一个故事。假设您从商店购买了一些家具,并且希望将其交付。但是,库存中仅剩一个是展示模型,但您同意购买。
在商店中,您购买的抽屉柜是一个有生命的物品:
var chestOfDrawers = { color: "red", numberOfDrawers: 4 }
但是,您不能在帖子中发送抽屉式的,所以您要拆除它(阅读,分类)。现在它在家具方面毫无用处。现在是JSON。扁平包装形式。
{"color":"red","numberOfDrawers":4}
收到后,您便可以重建抽屉柜(读取,解析)。现在以对象形式返回。
JSON / XML和YAML背后的原因是使数据能够以参与语言都可以理解的格式在编程语言之间传输;您不能直接给PHP或C 您的JavaScript对象;因为每种语言在引擎盖下代表的对象都不同。但是,由于我们已将对象分为JSON表示法;即表示数据的标准化方法,我们可以将对象的JSON表示形式传输到另一种语言(C,PHP),它们可以根据对象的JSON表示形式将我们拥有的JavaScript对象重新创建为自己的对象。
请务必注意,JSON无法代表函数或日期。如果尝试使用函数成员对对象进行字符串化,则该函数将从JSON表示中省略。日期将转换为字符串;
JSON.stringify({ foo: new Date(), blah: function () { alert('hello'); } }); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"
要解析JSON字符串,是否建议使用以下方法? var javascriptObj = JSON.parse(jSonString);
是的,但是较旧的浏览器本身不支持JSON(即<8)。为了支持这些,您应该包括json2.js。
json2.js
如果您使用的是jQuery,则可以调用jQuery.parseJSON(),JSON.parse()如果受支持,它将在后台使用,否则将回退到自定义实现中以解析输入。
jQuery.parseJSON()
JSON.parse()