深入浅出:完全理解并掌握JSON精要

深入浅出:完全掌握JSON精要

1. 1. JSON概述

所谓JSON,简单的说就是JavaScript 对象表示法(JavaScript Object Notation),是存储和交换文本信息的语法。其类似 XML,但比 XML 更小、更快,更易解析。

比较正式的表述是:

· JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

· 易于人阅读和编写,同时也易于机器解析和生成。

· 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。

· JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。

这些特性使JSON成为理想的数据交换语言。另外,JSON 解析器和 JSON 库支持许多不同的编程语言。

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。比如下面的应用:

清单-1:

深入浅出:完全理解并掌握JSON精要

2. 2.JSON的表示

标准而言,JSON建构于两种结构:

其一,"名/值"对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

其二,值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

而我们这里所说的JSON对象,主要是基于第一种"名/值"对建构模式下的表示方法,起正式应用更广泛和灵活。

通常,JSON对象是一个无序的"名/值"对集合。一个对象以"{"(左括号)开始,"}"(右括号)结束。每个"名称"后跟一个":"(冒号);":"(冒号)后面紧跟的是与名字关联的"值","名/值"对之间使用","(逗号)分隔。语法图例如下:

深入浅出:完全理解并掌握JSON精要

数组是值(value)的有序集合。一个数组以"["(左中括号)开始,"]"(右中括号)结束。值之间使用","(逗号)分隔。也就是说,数组可以是JSON对象中"名字对应的一种值"。数组的表示法如下:

深入浅出:完全理解并掌握JSON精要

那么,对应上述的两种表示法,需要关注的重点就是"value"。值(value)涵盖6种,可以是双引号括起来的字符串(string)、数值(number)、布尔值(true和false)、 null、对象(object)或者数组(array)。这些结构可以嵌套。对象可以是json对象,数组的值也可以上述任何值。

重点来了,上述值(value)表示图例如下所示:

深入浅出:完全理解并掌握JSON精要

字符串表示:

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。其表示方法如下:

深入浅出:完全理解并掌握JSON精要

数值表示:

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节,其表示方法如下:

深入浅出:完全理解并掌握JSON精要

3. 3. JSON示例

我们通常在JavaScript中表示的json对象如下:

深入浅出:完全理解并掌握JSON精要

在我们具体编程时,各种语言也有各自的JSON对象到对应语言对象的转换工具包可用,也可把各自语言的对象,转换成JSON对象,交由前端的JavaScript来做进一步的表现格式化处理,即前端页面的处理。

好了,关于JSON的就进到这里了,希望对你有帮助。

看完了,别忘了收藏、转发、点个赞,更别忘了要关注本号!^_^

深入浅出:完全理解并掌握JSON精要


深入浅出:完全理解并掌握JSON精要

相关推荐