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 安全问题时,应该记住以下三件事。

<script>POST

  •  方法请求,而不是 GET 方法。GET 方法可以通过 URL 来请求,甚至可以放在 <script>

JSON.parse()

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

JavaScript 中的 

XMLHttpRequest

 与 Web API 等概念听上去好像很难,但实际上并没有想象中那么复杂。它仅仅是一种简单的客户端与服务端的关系。JavaScript 中的 

XMLHttpRequest

 负责在客户端发起请求,而 Web API 负责在服务端返回响应。



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

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

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