博客 Javascript 从零开始学习JSON

从零开始学习JSON

0 前言

很多年前就接触过JSON,那是一份接口协议文档,两个模块程序之间用JSON通信。

但是,直到最近,才学习JSON,学会用手搓、用aardio编程处理JSON数据等。究其原因如下:

  1. 拖延症已病入膏肓。
  2. 现有JSON学习资料,几乎总与JavaScript、或者其他什么语言搅和在一起,让人望而生畏。

学会之后回头再看,JSON,其实只需要一篇小文章就能讲清楚。

1 JSON协议

JSON本身是一种协议,与TCP/IP、UDP等网络协议没有本质上的不同,与JavaScript等语言也没有必然联系。

协议是用来规范通信数据格式的,以便协议双方能够顺利交换数据(信息),实现通信。

2 JSON值

JSON定义了七种数据,称作JSON值:

1、数字(number)

数字只能是整数(如:0、2、5)或浮点数(如:7.99)。

2、字符串(string)

字符串以英文双引号“"”开始与结束(如:"json")。

3、数组(array)

数组以左中括号“[”开始,以右中括号“]”结束(如:[0, 2, 5, 7])。

4、对象(object)

对象以左花括号“{”开始,以右花括号“}”结束(如:{"name":"wenxi"})。

5、true

只能是true,不能写作True、TRUE等。

6、false

只能是false,不能写作False、FALSE等。


7、null

只能是null,不能写作NULL等。

实际应用中,一个JSON数据包,要么是一个JSON数组,要么是一个JSON对象。其他JSON值,即数字、字符串、true、false、null等,通常作为数组或对象的元素出现。

3 JSON对象

一个JSON对象以“{”开头,以“}”结束:

{ key:value,key1:value1… }

或中文表示:

{ 键:值,键1:值1… }

其中:

  1. 键(key)只能是JSON字符串(string)。
  2. 值(value)可以是任意类型JSON值,包括JSON对象——这意味着JSON对象可以嵌套,即:一个JSON对象包含其他JSON对象。还可以包含JSON数组。
  3. 键、值分隔符“:”是英文冒号,前后可以有空格或其他空白字符。
  4. 键值对分隔符“,”是英文逗号,前后可以有空格或其他空白字符。最后一个键值对之后不能有分隔符“,”。

4 JSON数组

一个JSON数组以“[”开头,以“]”结束:

[ value,value1,value2… ]

或中文表示:

[ 值,值1,值2…]

其中:

  1. 值可以是任意类型JSON值,包括JSON数组——这意味着JSON数组可以嵌套,即:一个JSON数组包含其他JSON数组。还可以包含JSON对象。
  2. 值分隔符“,”是英文逗号,前后可以有空格或其他空白字符。最后一个值之后不能有分隔符“,”。

5 JSON应用举例

5.1 表字段存储JSON数据(JSON数组)

一开始在wx_sleep表中,设计日期时间字段qy_time记录每晚起夜时间:

实际一使用就发现,有起夜2次的情况。查知偶尔一晚起夜3次算正常,于是新增日期时间字段qy1_time、qy2_time:

学习JSON之后,发现用JSON数组可将所有起夜时间存储到一个VARCHAR字段中(qy_notes)。再不用纠结qy_time字段个数了:

手搓两条起夜数据,指定JSON格式显示:

如果HeidiSQL显示为一行,说明按JSON格式化数据失败,即不是合法的JSON数组(末尾多了个“,”):

5.2 用JSON存放配置数据(JSON对象)

实际应用中,常用JSON保存程序配置信息。JSON配置信息,可以看作是人向程序传递信息的JSON数据包。

以下是Cryptomator程序的配置文件settings.json:

从上图可知,配置文件settings.json中只有一个JSON对象。这个对象中,与键"directories"对应的值,是一个JSON数组。这个数组包含了另一个JSON对象。

5.3 把JSON当数据库使用(JSON数组)

JSON对象与对象、数组与数组以及对象与数组之间相互包含(即嵌套),不限层级,使得JSON极具生命力,应用十分广泛。

比如,Markdown写作软件“妙笔”拿JSON当数据库用:

由上图可知,数据文件doc_tree.json中只有一个JSON数组。这个数组包含多个对象。其第一个对象中,与键"children"对应的值,是一个JSON数组,这个数组包含了多个JSON对象。

6 总结

JSON是一种协议。JSON协议数据包结构本质上只有两种:JSON对象和JSON数组。所以,JSON非常容易学习:

  1. 熟悉JSON值定义(七种),尤其是JSON字符串、JSON对象、JSON数组;
  2. 熟悉JSON对象嵌套、JSON数组嵌套以及两者混合嵌套;
  3. 一个JSON协议数据包,要么是一个JSON对象,要么是一个JSON数组。
本文来自今日头条。 授权转载请注明出处:http://www.dreamwu.com/blog/article/pid-20621.html

作者: 金闻希

发表评论

(快捷键:Ctrl+Enter 或 Alt+Enter)
匿名评论时,请补充填写以下信息:
*以下联系方式请至少填写一种:

评论列表(0)

联系我们

联系我们

QQ:2686930

在线咨询: QQ交谈

邮箱: dwu365@126.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部