json知识点整理

JSON的全称是javascript object notation (javascript对象表示法)


在json的名称-值对中,名称始终被双引号包裹


json的媒体类型是application/json


json中的数据类型包括:对象、字符串、数字、布尔值、null和数组


json值中如有双引号,加反斜线来进行转义。
反斜线需要另一个反斜线来转义
在编程中,null 就用来表示 0、一无所有、不存在等意思,而不用数字来表示。由于手表颜色的值也是不能被定义的,所以使用 null 来描述。


不要把 null 和 undefined 混淆,尤其是在使用 JavaScript 时。undefined 不是 JSON 中的数据类型,而在 JavaScript 中,undefined 是在尝试获取一些不存在的对象或变量时返回的结果。在 JavaScript 中,undefined 与那些声明的名称和值都不存在的对象或变量有关,而 null 则仅与对象或变量的值有关。null 是一个表示“没有值”的值。在 JSON 中,null 必须使用小写形式。


获取对象的属性

var jsonString = '{"animal":"cat"}';
var myObject = eval("(" + jsonString + ")");
alert(myObject.animal);


使用 JSON.parse() 代替 eval()

var jsonString = '{"animal":"cat"}';
var myObject = JSON.parse(jsonString);
alert(myObject.animal);

不那么规矩的 JSON

{
    "message": "<div onmouseover=\"alert('gotcha!')\">hover here.</div>"
}
如何阻止这种情况呢?一方面,可以采取一些手段使得消息中不包含 HTML。可以在客户端和服务端都加上这一认证。此外,还可以将消息中所有的 HTML 字符进行转码,这样的话,诸如  <div> 这样的标签就会被转换成 &lt;div&gt;,然后插入页面(&lt;div&gt; 将不会是合法的 HTML)。所有 这些方法都可以在网站中用具体的代码在客户端和服务端实现。

  • 在定位 JSON 安全问题时,应该记住以下三件事。

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

    • 对于不想公开的资源,仅允许使用 HTTP POST 方法请求,而不是 GET 方法。GET 方法可以通过 URL 来请求,甚至可以放在 <script> 标签中。

    • 使用 JSON.parse() 来代替 eval()eval() 函数会将传入的字符串编译并执行,这会让你的代码易被攻击。应仅使用 JSON.parse() 来解析 JSON 数据。

JavaScript 中的  XMLHttpRequest  与 Web API 等概念听上去好像很难,但实际上并没有想象中那么复杂。它仅仅是一种简单的客户端与服务端的关系。JavaScript 中的  XMLHttpRequest  负责在客户端发起请求,而 Web API 负责在服务端返回响应。


JavaScript 在幕后进行的这些操作,如请求天气数据,称为异步操作。异步操作通常指那些发生在幕后的、不会中断主进程的操作。

在 JavaScript 的异步操作中,“主进程”指 Web 浏览器的显示进程。例如,一个新闻页面可能会包含一个实时显示天气数据的侧边栏。在阅读新闻时,后台的代码会每隔 60 秒异步更新显示的天气数据。而这一操作并不需要刷新页面,也不会在阅读文章时对页面滚动产生什么影响。页面中唯一发生变化的只是包含天气信息的侧边栏。

这里提到的 JavaScript 中的异步(后台)操作被称为 AJAX。AJAX 的全称是 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值