JavaScript:JSON 和 JS 对象
区别
JSON(JavaScript Object Notation)仅仅是一种数据格式(或者叫数据形式)。数据格式其实就是一种规范,按照这种规范来存诸和交换数据。就好像 XML 格式一样。
| 区别 | Json | Javascript对象 | 
|---|---|---|
| 含义 | 仅仅是一种数据格式 | 对象的实例 | 
| 传输 | 可以跨平台数据传输,速度快 | 不能传输 | 
| 表现 | 1. 键值对 2. 键必须加双引号 3. 值不能为方法函数/undefined/NaN | 1.键值对 2.值可以是函数、对象、字符串、数字、boolean 等 | 
| 相互转换 | Json → JS 对象: 1. var obj = JSON.parse(jsonstring);2. var obj = eval("("+jsonstring+")"); | JS 对象 → Json: JSON.stringify(obj); | 
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同,但本质是不同的。我们不能把以下的对象叫 JSON,比如:
var obj1 = {}; // 这只是 JS 对象
// 可把这个称做:JSON 格式的 JavaScript 对象
var obj2 = {"width":100,"height":200,"name":"rose"};
// 可把这个称做:JSON 格式的字符串
var str1 = '{"width":100,"height":200,"name":"rose"}';
// 这个可叫 JSON 格式的数组,是 JSON 的稍复杂一点的形式
var arr = [
    {"width":100,"height":200,"name":"rose"},
    {"width":100,"height":200,"name":"rose"},
    {"width":100,"height":200,"name":"rose"},
];
        
// 这个可叫稍复杂一点的 JSON 格式的字符串     
var str2='['+
    '{"width":100,"height":200,"name":"rose"},'+
    '{"width":100,"height":200,"name":"rose"},'+
    '{"width":100,"height":200,"name":"rose"},'+
']';但 JSON 和 JavaScript 确实存在渊源,JSON 本身的意思就是 JavaScript 对象表示法(JavaScript Object Notation),可以说这种数据格式是从 JavaScript 对象中演变出来的。JSON 语法是 JavaScript 对象表示法语法的子集。
JSON 格式的数据,主要是为了跨平台交流数据用的。JSON 独立于语言和平台,JSON 解析器和 JSON 库支持许多不同的编程语言。
语法
1、JSON 语法规则:
- 数据在名称/值对中 
- 数据由逗号分隔 
- 花括号保存对象 
- 方括号保存数组 
2、JSON 数据值:
- 数字(整数或浮点数) 
- 字符串(在双引号中) 
- 逻辑值(true 或 false) 
- 数组(在方括号中) 
- 对象(在花括号中) 
- null 
JSON 数据结构有两种,这两种结构就是对象和数组,通过这两种结构可以表示各种复杂的结构。
JSON 使用严格的 JavaScript 对象表示法来表示结构化的数据,因此 JSON 的属性名必须有双引号。
{
    "company": "Apple",
    "age": 18,
    "IPO", true,
    "employees": [
        { "firstName":"John" , "lastName":"Doe" },
        { "firstName":"Anna" , "lastName":"Smith" },
        { "firstName":"Peter" , "lastName":"Jones" }
    ]
}数据转换
JSON 数据转换为 JS 对象
1、JS 解析器:eval() 函数
// 创建包含 JSON 语法的 JavaScript 字符串
var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
//使用 JS 解析器,解析 JSON 文本并生成 JS 对象
var obj = eval("(" + txt + ")");  使用 eval() 函数时,必须为传入的 JSON 数据参数添加括号'()',否则会报语法错误。
2、 解析器:parse()函数
但 eval() 的问题在于,除了可以解析 JSON 数据,也可以用于执行 JavaScript 脚本片段,这就会带来潜在的安全问题。JSON 提供了专门的 JSON Parser 来实现只用于解析 JSON 数据,不会执行 JavaScript 脚本,而且速度更快。如下:
var obj = JSON.parse(txt);较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。
JS 数据转换为 JSON 文本
使用 JSON.strigify() 函数,将 Javascript 对象转换为 JSON 文本数据。
var obj = {a:1,b:2}
var txt = JSON.stringify(obj);
console.log(txt);
结果:
"{"a":1,"b":2}"JavaScript:JSON 和 JS 对象的更多相关文章
- JSON(JavaScript Object Notation, JS 对象标记)
		JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言 ... 
- json转js对象方法,JS对象转JSON方法
		<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ... 
- JSON 与 JS 对象的区别与对比
		定义: JSON是什么?JSON是JS的一种简单数据格式,JSON是JavaScript原生格式,它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号. 问题: ... 
- JSON与JS对象的区别
		<script> var obj2={};//这只是JS对象 var obj3={width:100,height:200};/*这跟JSON就更不沾边了,只是JS的 对象 */ var ... 
- JSON 与 JS 对象的关系
		很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚.简单来说: JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串. 如 var obj ... 
- javascript json字符串与对象相互转换
		在实际项目中,经常遇到字符格式的问题,记下来以便日后方便查看.用到两个函数:JSON.stringify() 和 JSON.parse(). 使用ajax向后台请求数据,后台给前端返回数据,明明后端脚 ... 
- JSON与js对象序列化
		JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集.虽然是一个js的子集但是他与语 ... 
- 理清JS数组、json、js对象的区别与联系
		最近在敲代码时,遇上了一个关于JS数组的问题,由此引发了关于对象和json的联想,曾经觉得很畅顺的知识点突然模糊了.于是,为了理清这些东西,有了如下这篇文章.觉得没问题的猿们可以当复习,而那些带着疑问 ... 
- Jquery第一篇【介绍Jquery、回顾JavaScript代码、JS对象与JQ对象的区别】
		什么是Jquery? Jquey就是一款跨主流浏览器的JavaScript库,简化JavaScript对HTML操作 就是封装了JavaScript,能够简化我们写代码的一个JavaScript库 为 ... 
随机推荐
- Django Cache缓存系统介绍及Memcached使用
			在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面. 这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了. 缓存就是为了 ... 
- win10系统安装loadrunner11提示“为了对电脑进行保护 已经阻止此应用”的解决方案
			在执行loadrunner安装包中的setup.exe时会有如下提示: 解决方法:点击Win+R快捷键打开运行,输入“ gpedit.msc”按下回车键打开组策略编辑: 在左边选择[计算机配置]→[W ... 
- java笔记之IO1
			File:文件和目录(文件夹)路径名的抽象表示形式 * 构造方法: * File(String pathname):根据一个路径得到File对象 * File(String parent, S ... 
- jquery 3D云
			http://www.jq22.com/jquery-info1325 http://demo.jq22.com/jquery-cloud-141217202931 下载地址: http://www. ... 
- bzoj 2111: [ZJOI2010]Perm 排列计数【树形dp+lucas】
			是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形dp 设f[i]为i点的方案数,si[i]为i点的子树大小,递推式是\( f[i]=f[i*2]*f[i*2+1]*C_{si[i]-1} ... 
- bzoj3118: Orz the MST(线性规划+单纯形法)
			传送门 不难发现,对于每一条树边肯定要减小它的权值,对于每一条非树边要增加它的权值 对于每一条非树边\(j\),他肯定与某些树边构成了一个环,那么它的边权必须大于等于这个环上的所有边 设其中一条边为\ ... 
- (5)css盒子模型(基础上)
			CSS 盒子模型概述 ***什么是CSS的盒子模型呢?为什么叫它是盒子?先说说我们在网页设计中常听的属性名:内容(content).边框(border).内边距(padding).外边距(margin ... 
- [App Store Connect帮助]八、维护您的 App(5)生成产品报告
			您可以生成产品报告,详细介绍您所在机构中 App 目录的信息和设置,包括 App 内购买项目,以及 Game Center排行榜和成就的元数据. 首先您以不同类型请求产品报告,之后您会收到一封电子邮件 ... 
- [App Store Connect帮助]七、在 App Store 上发行(3.4)提交至“App 审核”:将构建版本从审核中移除
			若要停止“App 审核”流程,您可以将该 App 版本从 App 审核中移除.要执行此项操作,App 状态必须为下列之一: 正在等待出口合规检查 正在等待审核 正在审核 等待开发者发布 等待 Appl ... 
- 用set和shopt设置bash选项
			1.set命令 -o打开选项,+o关闭选项#set -o //显示选项设置#set -o noclobber //打开该选项,重定向将覆盖已存在的文件#set +o noclobber //关闭该选项 ... 
