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不是基础的基础
Dec 24 Javascript
JS 强制设为首页的代码
Jan 31 Javascript
Js,alert出现乱码问题的解决方法
Jun 19 Javascript
JavaScript 数组详解
Oct 10 Javascript
各种页面定时跳转(倒计时跳转)代码总结
Oct 24 Javascript
从零学jquery之如何使用回调函数
May 16 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 Javascript
微信小程序解析富文本过程详解
Jul 13 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 Javascript
Java 生成随机字符的示例代码
Jan 13 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
PHP编程之高级技巧——利用Mysql函数
2006/10/09 PHP
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
js资料prototype 属性
2007/03/13 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
python修改注册表终止360进程实例
2014/10/13 Python
详解Python中DOM方法的动态性
2015/04/11 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
财务主管自我鉴定
2014/01/17 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
农行心得体会
2014/09/02 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript