JSON/YAML 数据模型

从结构上看,所有的数据最终都可以分解成三种类型:

  1. 标量(scalar):一个单独的字符串或数字,如”北京”。
  2. 序列(sequence):若干相关数据按顺序并列,又称数组(array)或列表(list),如”北京,上海”。
  3. 映射(mapping):名值对(name/value),又称散列(hash)或字典(dictionary),如”首都:北京”。

数据构成的最小单位原来如此简单——难怪编程语言里只要有了数组和对象,就能存储一切数据。

JSON 的四条规则

  • 并列的数据之间用逗号(,)分隔;
  • 映射用冒号(:)表示;
  • 数组用方括号([])表示;
  • 对象用大括号({})表示。

这四条规则就是 JSON 格式的全部内容。比如:

北京市的面积为 16800 平方公里,常住人口 1600 万人。
上海市的面积为 6400 平方公里,常住人口 1800 万。

写成 JSON:

[
    {"城市":"北京","面积":16800,"人口":1600},
    {"城市":"上海","面积":6400,"人口":1800}
]

如果事先知道数据结构,可进一步简化:

[
    ["北京",16800,1600],
    ["上海",6400,1800]
]

JSON 非常易学易用,短短几年就取代 XML,成为互联网上最受欢迎的数据交换格式。

数组 vs 对象

学习 JavaScript 时,容易搞不清数组和对象的区别——两者都能表示数据集合。比如数组 a=[1,2,3,4] 和对象 a={0:1,1:2,2:3,3:4},访问 a[1] 的结果相同。

区别在于:

  • 数组表示有序数据的集合;
  • 对象表示无序数据的集合。

数据顺序很重要时用数组,否则用对象。另一个区别是:数组的数据没有名称,对象的数据有名称。

很多编程语言中还有一种”关联数组”(associative array),其数据是有名称的。比如在 JavaScript 中定义对象:

var a={"城市":"北京","面积":16800,"人口":1600};

也可以定义成关联数组:

a["城市"]="北京";
a["面积"]=16800;
a["人口"]=1600;

   转载规则


《JSON/YAML 数据模型》 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Linux 进程状态详解 Linux 进程状态详解
有同事问到 top 命令里的 running、sleep、stop、zombie 等进程状态分别是什么意思,于是借这个机会整理一下 Linux 系统里的进程状态。 概述进程(Process)即当前正在运行的计算机程序的实例。每个进程都有一些
2020-02-20
下一篇 
Linux 查看端口占用 Linux 查看端口占用
一、lsof 查看端口占用用 lsof -i:端口号 可以查看某一端口的占用情况: # lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME lwfs
2020-01-23
  目录