2-json

第二章 JSON数据格式

1 简介

JSON是一种轻量级的、用于数据交换的数据格式(A Lightweight Data-Interchange Format)。JSON的全称为JavaScript Object Notation。因为JSON数据格式灵活,且易于人们阅读,也易于程序解析和生成,JSON被广泛的用于大型应用程序之中。

JSON是一种基于文本的数据格式;它不依赖于任何编程语言或者平台,所以,JSON非常适合用于程序之间或者平台之间的数据交换。

小水滴还提供了在线JSON文档校验和格式化工具,欢迎使用。

2 基础知识

JSON格式的数据由两种数据结构组成。第一种是名称/值对(Name/Value Pair)。或者换句话说,第一种数据结构是一对数据;它们由名称和值组成。第二种数据结构是一组有序的值(An Ordered List of Values)。对于编程语言而言,第二种结构非常类似于数组、链表或者序列的概念。

我们将从一个简单的例子来介绍JSON格式的基础知识。一个JSON字符串由"{"(左花括号)开始,由"}"(右花括号)结束。在这对花括号之间可以包含一个或者多个名称/值对。名称必须是一个字符串,而值可以是一个字符串、一个数字true/falsenull对象(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

3 JSON vs. XML

XML是一种基于文本的可扩展标记语言。XML也可以用于程序间的数据交换。XML和JSON都是公开的标准,独立于程序和平台。那么,JSON和XML有哪些相同点和不同点呢?

两者相同之处在于:

  1. JSON和XML都支持结构化的数据,都可以使用树形结构来存储数据。
  2. JSON和XML能被绝大多数编程语言解析和生成。
  3. JSON和XML都不依赖于平台。因此,他们都可以被用于跨平台的数据交换。

但是,JSON的独特优势在于:

  1. JSON是一个轻量级的数据格式。JSON容易阅读,也易于被程序生成和处理。
  2. JSON更加轻便。JSON没有采用XML那种冗余的数据表示格式(例如:JSON没有使用标签)。因此,在表达相同数据时,JSON字符串更短,被程序处理更快。
  3. JSON支持数组;而XML从语法上不支持数组。

4 结语

本章介绍了JSON的基础知识。因为JSON非常轻便、通用性好和扩展性好,她被广泛的应用于大型系统之中,并且越来越多的新系统选择了JSON作为数据接口,而非XML语言。

 

上一章
下一章

注册用户登陆后可留言

Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.