JSON对象和JavaScript对象直接量的区别--不同之处

 JSON对象和JS对象直接量

在工作当中,我们总是可以听到人说将数据转换为JSON对象,或者说把JSON对象转换为字符串之类的话,下面是关于JSON的具体说明。

 JSON对象并不是JavaScript对象字面量(Object Literals)

很多人错误的将JSON认为是JavaScript当中的对象字面量(object Literals),原因非常简单,就是因为它们的语法是非常相似的,但是在ECMA中明确的说明了。JSON只是一种数据交互语言,只有我们将之用在string上下文的时候它才叫JSON。

序列化与反序列化

2个程序(或服务器、语言等)需要交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。复杂的数据结构经常需要用到,并且通过各种各样的中括号{},小括号(),叫括号<>和空格来组成,这个字符串仅仅是按照要求规范好的字符。

为此,我们为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。

常见的数据流行交互格式有YAMLXML、和JSON都是常用的数据交互格式。

字面量
引用Mozilla Developer Center里的几句话,供大家参考:

  1. 他们是固定的值,不是变量,让你从“字面上”理解脚本。 (Literals)
  2. 字符串字面量是由双引号(")或单引号(‘)包围起来的零个或多个字符组成的。(Strings Literals)
  3. 对象字面量是由大括号({})括起来的零个或多个对象的属性名-值对。(Object Literals)

什么时候会成为JSON

JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaScript的一个子集。
{ "prop": "val" } 这样的声明有可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在string上下文(用单引号或双引号引住,或者从text文件读取)的话,那它就是JSON字符串,如果是用在对象字面量上下文中,那它就是对象字面量。

例如:

// 这是JSON字符串
var foo = ‘{ "prop": "val" }‘;

// 这是对象字面量
var bar = { "prop": "val" };

而且要注意,JSON有非常严格的语法,在string上下文里{ "prop": "val" } 是个合法的JSON,但{ prop: "val" }和{ ‘prop‘: ‘val‘ }确实不合法的。所有属性名称和它的值都必须用双引号引住,不能使用单引号。

JS当中的JSON对象

目前,JSON对象已经成为了JS当中的一个内置对象,有两个静态的方法:JSON.parse和JSON.stringify。

JSON.parse主要要来将JSON字符串反序列化成对象,JSON.stringify用来将对象序列化成JSON字符串。老版本的浏览器不支持这个对象,但你可以通过json2.js来实现同样的功能。

例如:

// 这是JSON字符串,比如从AJAX获取字符串信息
var my_json_string = ‘{ "prop": "val" }‘;

// 将字符串反序列化成对象
var my_obj = JSON.parse( my_json_string );

alert( my_obj.prop == ‘val‘ ); //  提示 true, 和想象的一样!

// 将对象序列化成JSON字符串
var my_other_json_string = JSON.stringify( my_obj );

  

原文地址:https://www.cnblogs.com/zhaohongcheng/p/11124717.html

时间: 2024-11-08 23:31:26

JSON对象和JavaScript对象直接量的区别--不同之处的相关文章

JSON不是JavaScript对象

一篇短小精悍的文章,我觉得不错就翻译了. 原文作者 Fizer Khan 原文地址 http://www.fizerkhan.com/blog/posts/JSON-is-not-Javascript-Object.html 很多人都把JSON当作JavaScript对象,但它根本不是.JSON只是一种灵感来自JavaScript对象结构的字符串表示法.JSON被设计得简单松散,用来在服务器和浏览器之间传输数据.因为它的简洁性,也在浏览器和服务器之外的其他应用中被使用. 我尝试拷贝一些JavaS

【JQuery】jquery对象和javascript对象即DOM对象相互转换

jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象.jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $("#img").attr("src","test.jpg"); 这里的 $("#img")就是 jQuery 对象. DOM对象就是Javascript 固有的一些对象操作.DOM 对象能使用Javascript 固有的方法,但是不能使用

JSON 字符串转换为 JavaScript 对象

将数据组合成json格式的字符串var text = '{ "sites" : [' + '{ "name":"Runoob" , "url":"www.runoob.com" },' + '{ "name":"Google" , "url":"www.google.com" },' + '{ "name":

jQuery对象和Javascript对象

jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象.jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $("#img").attr("src","test.jpg"); 这里的 $("#img")就是 jQuery 对象. DOM对象就是Javascript 固有的一些对象操作.DOM 对象能使用Javascript 固有的方法,但是不能使用

jquery对象和javascript对象相互转换

本文转载:http://jeiofw.blog.51cto.com/3319919/786506 jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象.jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $("#img").attr("src","test.jpg"); 这里的 $("#img")就是 jQuery 对象. DOM对象就是Java

json格式的javascript对象用法分析

格式: objectName = {  property1:value1,  property2:value2,  -,  propertyN:valueN } property是对象的属性 ,value则是对象的值,值可以是字符串.数字或对象三者之一 例一: 值为字符串和数字 var user={  name:"user1",  age:18 }; 例二:值为字符串和对象 var user={ //user本身是一个对象  name:"user1",  job:{

JS对象、基本类型和字面量的区别

字面值: var str1='this is a simple string'; var num1=1.45; var answer1=true; 基本类型: var str2=String('this is a simple string'); var num2=Number(1.45); var bool2=Boolean(true); 对象实例: var str3=new String('this is a simple string'); var num3=new Number(1.45

jquery对象和javascript对象即DOM对象相互转换

1. DOM 对象转成 jQuery 对象对于已经是一个 DOM 对象,只需要用 $() 把DOM对象包装起来,就可以获得一个 jQuery 对象了,$(DOM 对象) 注: var是定义变量如: var v = document.getElementById("v"); //DOM对象var $v = $(v); //jQuery 对象转换后,就可以任意使用 jQuery 的方法.2. jQuery 对象转成 DOM 对象两种转换方式讲一个 jQuery 对象转换成 DOM 对象:

JSON和JavaScript对象

var obj={width:100,height:200},这样的并不叫JSON,并且JSON只是一种数据格式,并不是具体的实例. 但很多人把这样的JS对象当成JSON,下面把这个问题讲清楚 一.JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串?又如何把JSON字符串转化为JavaScript对象? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON格式的数据,主要是为了跨平台交流数据用的.