JSON学习(JSON: JavaScript Object Notation(JavaScript 对象表示法))

本部分是对菜鸟教程的一些总结。

什么是 JSON ?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解
JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。


为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML

  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中

使用 JSON

  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

语法:

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

" name " : " 哈哈 "

这很容易理解,等价于这条 JavaScript 语句:

name = " 哈哈 "

JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • null

JSON 数字

JSON 数字可以是整型或者浮点型:

{ " age " : 30 }

JSON 对象

JSON 对象在大括号({})中书写:

对象可以包含多个名称/值对:

{ " name " : " 菜鸟教程 " , " url " : " www.runoob.com " }

这一点也容易理解,与这条 JavaScript 语句等价:

name = " 菜鸟教程 " url = " www.runoob.com "


JSON 数组

JSON 数组在中括号中书写:

数组可包含多个对象:

{ " sites " : [ { " name " : " 菜鸟教程 " , " url " : " www.runoob.com " } , { " name " : " google " , " url " : " www.google.com " } , { " name " : " 微博 " , " url " : " www.weibo.com " } ] }

在上面的例子中,对象 "sites" 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。


JSON 布尔值

JSON 布尔值可以是 true 或者 false:

{ " flag " : true }

JSON null

JSON 可以设置 null 值:

{ " runoob " : null }


JSON 对象


对象语法

实例

{ " name " : " runoob " , " alexa " : 10000 , " site " : null }

JSON 对象使用在大括号({})中书写。

对象可以包含多个 key/value(键/值)对。

key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

key 和 value 中使用冒号(:)分割。

每个 key/value 对使用逗号(,)分割。


访问对象值

你可以使用点号(.)来访问对象的值:

实例

var myObj , x ; myObj = { " name " : " runoob " , " alexa " : 10000 , " site " : null } ; x = myObj . name ;

也可以使用中括号([])来访问对象的值:

实例

var myObj , x ; myObj = { " name " : " runoob " , " alexa " : 10000 , " site " : null } ; x = myObj [ " name " ] ;

json 对象和 json 字符串的区别:

json 对象

var str2 = { "name": "asan", "sex": "man" };

json字符串

var str1 = '{ "name": "deyuyi", "sex": "man" }';

在使用for遍历时,只能通过 myObj[x] 来获取相应属性的值,而不能使用 myObj.x

<div id="demo"></div>
<script>
var myObj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com" };

for (x in myObj) { 
  document.getElementById("demo").innerHTML += myObj[x] + "<br>";
}
</script>




JSON.parse()

JSON 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

语法

JSON.parse(text[, reviver])

参数说明:

  • text:必需, 一个有效的 JSON 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

SON 解析实例

例如我们从服务器接收了以下数据:

{ " name " : " runoob " , " alexa " : 10000 , " site " : " www.runoob.com " }

我们使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象:

var obj = JSON . parse ( ' { "name":"runoob", "alexa":10000, "site":"www.runoob.com" } ' ) ;


JSON.stringify()

JSON 通常用于与服务端交换数据。

在向服务器发送数据时一般是字符串。

我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

语法

JSON.stringify(value[, replacer[, space]])

参数说明:

  • value:

    必需, 一个有效的 JSON 对象。

  • replacer:

    可选。用于转换结果的函数或数组。

    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。

  • space:

    可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 有可以使用非数字,如:\t。

JavaScript 对象转换

例如我们向服务器发送以下数据:

var obj = { " name " : " runoob " , " alexa " : 10000 , " site " : " www.runoob.com " } ;

我们使用 JSON.stringify() 方法处理以上数据,将其转换为字符串:

var myJSON = JSON . stringify ( obj ) ;

myJSON 为字符串。

我们可以将 myJSON 发送到服务器:

实例

var obj = { " name " : " runoob " , " alexa " : 10000 , " site " : " www.runoob.com " } ; var myJSON = JSON . stringify ( obj ) ; document . getElementById ( " demo " ) . innerHTML = myJSON ;

猜你喜欢

转载自blog.csdn.net/qq_40434646/article/details/81034271