JSON 必知必会 观后记


Posted in Javascript onOctober 27, 2016

推荐大家购买纸质书籍,当然如果条件有限可以临时下载电子版的:https://3water.com/books/504703.html

术语
可移植性
平台和系统间传输信息的兼容性。
 
JSON
JavaScriptObjectNotation  对象表示法。
 
数据交换格式
用于不同平台或系统间交换数据的文本。
 
字面量
字面意思与其想表达的意思完全一致的值。
 
变量
通过形如X的标识符来表示的,可以修改的一类值。
 
最大移植性
通过保证数据本身对于平台和系统的兼容性来提供超越数据格式本身的可移植性。
 
名称-值对
指拥有名称和对应值的属性和特征(也叫键值对)。
 
语法验证
json格式的验证。
 
一致性验证
关注独特的数据结构验证。
 
JSON中的字符串类型
一个字符串值,如“你是个好人”,使用双引号包裹。
 
概念

JSON是一种数据交换格式。
 
JSON独立于编程语言。
 
JSON基于JavaScript对象的字面量表示法(重点在于表示法)。
 
JSON表达数据的方式对通用的编程概念都很友好。
 
JSON基于JavaScript对象字面量表示属性的语法,但并不包含与JavaScript对象字面量的函数相关部分。
 
JSON的名称-值对中,名称始终被双引号包裹。
 
JSON的名称-值对中,值可以是字符串,数字,布尔值,null,对象式数组。
 
JSON中的名称-值对列表始终被花括号包裹。
 
JSON中多个名称值对使用逗号分隔。
 
JSON文件使用.json扩展名。
 
JSON的媒体类型是application/json。
 
JSON中的布尔类型的值只有true和false,所有字母必须小写。
 
JSON中的null值的所有字母必须小写,表示空值。
 
JSON中的数字类型,一个数字值,如66,可以是正整数,负整数,小数,指数。
 
对象和数组很关键的区别就是,对象是名称-值对构成的列表或集合,数组是值构成的列表和集合。
 
对象和数组另一个关键区别是,数组中所有值应具有相同的数据类型。
 
术语
JSON中的数组
数组是值的集合或列表,每个值都可以是字符串,数字,布尔值,对象或数组中的任何一种。数组必须被[]包裹,且值与值之间用逗号分隔。
 
JSON中的对象类型
对象类型是使用逗号分隔的名称-值对构成的集合,并使用{}包裹。
 
JSON Schema
数据交换中的一种虚拟合同。
 
服务端(web开发中的)

当网页式资源被请求时,在服务器上执行的一系列操作。服务器为互联网浏览器提供其处理和加载的响应。
 
客户端(web开发中的)
当浏览器请求的界面加载完毕时执行的一系列操作,通常是指HTML,CSS和JavaScript。
 
概念
JSON验证器负责验证语法错误,JSON Schema负责提供一致性验证。
 
JSONSchema是负责数据接收第一道防线,也是数据发送方节约时间,保证数据正确的好工具。
 
JSONSchema可以解决下列一致性验证的问题

1.值的数据类型是否正确?

可以具体规定一个值是数字、字符串等类型。

2.是否包含所需要的数据?

可以具体规定哪些数据是需要的,哪些不需要的。

3.值的形式是不是我需要的?

可以指定范围,最小值最大值。
 
JSON本身不构成什么威胁,它只是文本。
 
在定位JSON安全问题时,应该记住以下3件事.

1.不要使用顶级数组,顶级数组是合法的JavaScript脚本,他们可以用<script>标签链接并使用。

2.对于不想公开的资源,仅允许使用HTTPPost方法请求,而不是Get方法,get方法可以通过url请求,甚至放在script标签中。

3.使用JSON.parser()来替代eval(),eval()函数会将传入的字符串编译并执行,这会让你的代码易被攻击,应仅使用JSON.parser()来解析json数据。
 
安全漏洞通常由于开发人员没有考虑“黑客如何利用这一点”这一问题所导致的。
 
JavaScript的XMLHTTPRequest与WEBAPI之间的关系是客户端与服务端之间的关系。
 
XMLHTTPRequest并不仅限于XML,还可以用它来请求JSON资源
 
术语
跨站请求伪造(CSRF)
指利用站点对用户浏览器的信任进行攻击
 
顶层JSON数组
存在于JSON名称-值对之外的位于文档最顶层的JSON数组。
 
注入攻击
依赖于将数据注入到web应用程序以方便恶意数据执行或编译的攻击。
 
JSON跨站脚本攻击
通过截取或将站点中所使用的第三方代码更换为恶意脚本,来对站点进行的一种注入攻击。
 
webApi
通过Http与服务进行交互的一系列指令与标准。
 
XMLHTTPRequest
一种JavaScript对象,无需刷新页面即可从一个URL获取数据,常用与AJAX编程。
 
超文本传输协议(HTTP)
万维网使用的交换数据的基本协议
 
序列化
将对象转化为文本的操作
 
反序列化
将文本转化为对象的操作。
 
概念
网站为人服务,webAPI为代码服务,他们都使用Http协议。
 
同源策略使得JavaScript和JSON资源进行客户端-服务端交流时出现了一些困难。
 
客户端跨域的XMLHTTPRequest需要服务端的支持来保证JSON资源请求成功。
 
jQuery是一款提供了JSON请求和解析功能的能够缩短开发时间的抽象化工具,同时它还解决了跨浏览器兼容问题。
 
AngularJS MVC的概念

JSON是模型||数据模型

HTML是视图,且提供了与模型进行绑定的语法

控制器是AngularJS语法来定义和操作与模型和视图间的交互的JavaScript文件。
 
AngularJS使得JavaScript对象和JSON在MVC架构中大放异彩。
 
在关系型数据库中,常常会存在表列行以及他们之间的关系,其中会用到主键和外键。
 
NoSQL数据库有许多种,它们有与传统的关系型模型不同的数据存储与利用方法。
 
CouchDB数据库重要概念

1.它是一种面向文档的NoSQL数据库

2.它存储和管理JSON文档

3.它会在存储和获取数据的同时维护好数据结构

4.它会使用基于HTTP的API来获取作为JSON文档资源的数据

5.它使用JavaScript作为查询语言,且通过视图的map和reduce方法来跨API获取数据。
 
在服务端,可以将JSON反序列化为对象而运用在编程逻辑中,也可以将对象序列化成JSON格式。
 
JSON同时被服务端和客户端较好的支持,使得它在web领域从诸多交换数据格式中脱颖而出。
 
术语
同源策略
出于安全考虑,浏览器仅会请求同一域的脚本。
 
跨域资源共享CORS
通过设置响应头,使得跨于请求可以成功。
 
JSON-p
使用script标签,绕过同源策略限制,从不同域名的服务器请求JSON。
 
抽象化
一种处理复杂系统的技术,主要思想是将一个大问题转换为多个小问题
 
框架
一种能够节约时间,已让我们更专注于构建功能的抽象化工具。
 
Jquery.parserJSON()
一个jquery的函数,它不仅调用JSON.parser()函数,还会兼容那些不支持JSON.parser()函数的老式浏览器,且通过验证字符来评估字符串,从而避免了可能的安全问题。
 
jquery.getJSON()
jquery.ajax()函数的简写形式,其中包含了将json解析为JavaScript对象的功能。
 
单页web应用
与传统的多页方式不同,着力于提供更加无缝的应用体验的网页。
 
模型-视图-控制器(MVC)
一种应用架构模式,它将应用分为3部分:模型(数据)、视图(展示)、以及控制器(更新模型和视图)
 
AngularJS
一款使用JavaScript对象作为数据模型的JavaScriptMVC框架。
 
关系型数据库
一种将存储的数据用可以辨识的关系进行结构化存储的数据库。
 
NoSQL数据库
一种不通过存储数据间关系来存储的数据库。
 
CouchDB
一种面向文档的NoSQL数据库存储类型,使用JSON文档的形式来存储数据。
 
ASP.NET
微软开发的服务端Web框架
 
PHP
用于创建动态web页面的服务端脚本语言
 
Ruby on Rails
使用Ruby编写的服务端Web应用框架
 
Node.js
基于谷歌V8引擎的服务端JavaScript。
 
java
一种面向对象编程语言。
 
JSON还会作为静止的配置文件
 
在考虑用什么数据格式时,数据的形式和交换数据的系统都应该被考虑到。!!!JSON不总是最佳选择。

Javascript 相关文章推荐
qTip 基于JQuery的Tooltip插件[兼容性好]
Sep 01 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
javascript实现随机读取数组的方法
Aug 03 Javascript
整理Javascript基础语法学习笔记
Nov 29 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
Oct 18 Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 Javascript
JS函数基本定义与用法示例
Jan 15 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 #Javascript
Javascript 获取鼠标当前的位置实现方法
Oct 27 #Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 #Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 #Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 #Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 #Javascript
简单理解vue中el、template、replace元素
Oct 27 #Javascript
You might like
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
php常用数学函数汇总
2014/11/21 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
Python 调用DLL操作抄表机
2009/01/12 Python
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
python使用生成器实现可迭代对象
2018/03/20 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
岗位职责怎么写
2014/03/14 职场文书
物资采购方案
2014/06/12 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书