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 相关文章推荐
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
js将json格式的对象拼接成复杂的url参数方法
May 25 Javascript
jQuery组件easyui对话框实现代码
Aug 25 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
Oct 30 Javascript
leaflet的开发入门教程
Nov 17 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
JS 中document.write()的用法和清空的原因浅析
Dec 04 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
May 16 Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 Javascript
Canvas三种动态画圆实现方法说明(小结)
Apr 16 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
求PHP数组最大值,最小值的代码
2011/10/31 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
ES6关于Promise的用法详解
2018/05/07 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
Python map及filter函数使用方法解析
2020/08/06 Python
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
优秀求职信范文分享
2014/01/26 职场文书
开业典礼主持词
2014/03/21 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书