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 相关文章推荐
在视频前插入广告
Nov 20 Javascript
js替代copy(示例代码)
Nov 27 Javascript
30个经典的jQuery代码开发技巧
Dec 15 Javascript
JQuery radio(单选按钮)操作方法汇总
Apr 15 Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 Javascript
jQuery的文档处理程序详解
May 10 Javascript
vue2.0+webpack环境的构造过程
Nov 08 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
pytorch的batch normalize使用详解
2020/01/15 Python
Python加速程序运行的方法
2020/07/29 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
美国在线印刷公司:PsPrint
2017/10/12 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
区域销售经理岗位职责
2015/04/02 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
汽车销售合同文本
2019/08/08 职场文书