JSON是一种轻量级的、用于数据交换的数据格式(A Lightweight Data-Interchange Format)。JSON的全称为JavaScript Object Notation。因为JSON数据格式灵活,且易于人们阅读,也易于程序解析和生成,JSON被广泛的用于大型应用程序之中。
JSON是一种基于文本的数据格式;它不依赖于任何编程语言或者平台,所以,JSON非常适合用于程序之间或者平台之间的数据交换。
小水滴还提供了在线JSON文档校验和格式化工具,欢迎使用。
JSON格式的数据由两种数据结构组成。第一种是名称/值对(Name/Value Pair)。或者换句话说,第一种数据结构是一对数据;它们由名称和值组成。第二种数据结构是一组有序的值(An Ordered List of Values)。对于编程语言而言,第二种结构非常类似于数组、链表或者序列的概念。
我们将从一个简单的例子来介绍JSON格式的基础知识。一个JSON字符串由"{"(左花括号)开始,由"}"(右花括号)结束。在这对花括号之间可以包含一个或者多个名称/值对。名称必须是一个字符串,而值可以是一个字符串、一个数字、true/false、null、对象(object)、或者数组(Array)。其中,对象就是以"{"(左花括号)开始,以"}"(右花括号)结束、且其中可包含一个或者多个名称/值的对象。所以,我们可以看出,JSON字符串本身就是一个对象。JSON数组则是一组有序的值。
如下是一个简单的JSON字符串的例子。这个JSON字符串表示的是一个对象(Object),因为所有的内容都包含在"{"和"}"之间。我们称这个对象为根对象。这个根对象有三个名称/值对;它们的名称是name、questions和question_ids。name对应的值是一个字符串"JSON course";而questions对应的值是一个数组(Array)。JSON数组将所有的内容包含在"["(左方括号)和"]"(右方括号)之中。在这个数组中,每个元素都是一个对象,因为每个元素的内容都是包含在"{"和"}"之间的。例如:第一个对象包含了三个名称/值对;名称"id"对应的是一个数字1;其他两个名称分别对应的是一个字符串。最后,question_ids对应的是一个数组,其中每个元素是一个数字。
{
"name":"JSON course",
"questions": [
{
"id": 1,
"body": "what is JSON?",
"answer": "JSON is a lightweight data-interchange format."
},
{
"id": 2,
"body": "what is a name in a JSON string?",
"answer": "A name in a JSON string is a string."
}
],
"question_ids": [1, 2]
}
有一些特殊字符需要经过转换之后才能在JSON字符串中正常使用,我们称这些特殊字符为转义字符(Escaped Characters)。JSON的转义字符如下所示。
字符名称 | 转义字符 |
---|---|
双引号 | \" |
反斜线 | \\ |
正斜线 | \/ |
退格符 | \b |
换页符 | \f |
制表符 | \t |
换行符 | \n |
回车符 | \r |
XML是一种基于文本的可扩展标记语言。XML也可以用于程序间的数据交换。XML和JSON都是公开的标准,独立于程序和平台。那么,JSON和XML有哪些相同点和不同点呢?
两者相同之处在于:
但是,JSON的独特优势在于:
本章介绍了JSON的基础知识。因为JSON非常轻便、通用性好和扩展性好,她被广泛的应用于大型系统之中,并且越来越多的新系统选择了JSON作为数据接口,而非XML语言。
注册用户登陆后可留言