龙空技术网

在JSON中使用数组,让您的JSON无限扩展

网云技术 300

前言:

此时咱们对“json 数组”大概比较看重,姐妹们都需要分析一些“json 数组”的相关知识。那么小编同时在网络上收集了一些对于“json 数组””的相关内容,希望大家能喜欢,朋友们快快来学习一下吧!

JSON是个好东西,用过的朋友都知道。无论是编程、还是在数据库中,熟练的应用的JSON,往往起到事半功倍的效果。但也有不少朋友在使用JSON时望而却步,JSON中最难理解的,应该要算是数组了。今天我们就讲一下JSON中的数组。

为了照顾对JSON还不了解的朋友,照例我这里做一个小科普。

JSON小科普,因为简单、所以复杂

JSON只是一种轻量级的数据格式,可以用来存储或交换数据。

JSON的语法格式非常简单,如果您是搞编程的,简单了解一下,您就会觉得真是一点技术含量都没有。我们还是通过一个例子看看吧:

{"姓名":"特没普","国籍":"霉隶贱","年龄":0,"人否?":false,"身高CM":144.44,"死亡时间":"2019-05-19 14:14:14","爱好":{ "文雅类":"发微博乱吠", "抓狂类":"这二货逮着谁就咬谁", "好色否?":true},"职务":["霉隶贱总统","中国的笑料","世界的小丑"],"家人":[ { "姓名":"霉隶贱凤姐", "关系":"犬女", "性别":"不阴不阳" }, { "姓名":"霉隶贱杂碎", "关系":"犬子", "性别":"不阴不阳" } ]}

这样看起来太累,在本人开发的编辑器中看一下会更清晰,如下图所示:

上面的例子够简单吧,基本把所有的JSON语法格式否囊括了,当然也包括JSON数组。通过上图代码和图示可以看出,数组也需要有键名称,后面的数组序列使用[]包裹起来,键值可以是字符串(当然也可以是整数、浮点数、布尔等)列表、也可以是若干JSON列表。看上去也不算复杂吧!

有朋友可能会问,为何JSON支持的类型中,独独没有日期时间呢?您说对了,JSON确实不支持日期时间,如果您需要用,就用字符串来代替吧,本质上跟日期时间也没太多不同。

JSON数组才是JSON的精华所在

简单的数据项,键值对一个是名字、一个是值,看上去非常简单,但数组却有点将这种关系复杂化了,键值并不是简单的值,而是一种对象序列,总让人感觉怪怪的。如果您因为这个望而却步,我劝您万不可放弃,JSON数组才是JSON的精华。

为什么这样说呢?我来给大家举一个例子。

比如我们开发的系统时,要用到显示数据的表格,表格有很多列,每一列都有各自的属性,包括列的标题、列的数据类型、列的宽度、列的特殊处理等等,每一列的属性项目都是一致的,但对应的值各不相同。我们希望将数据放在JSON中,如果没有数组,我们定义这么多列信息,处理时就麻烦大了。

有什么麻烦呢?

首先是如何定义数据的问题,我能想到的最简单的方法,就是为每一个列定一个名称不同的键,对应一段描述属性的JSON,具体参看下图:

看上去似乎问题也不大,可如果我们想在中间插入一列怎么办呢?麻烦可就来了,所有的键名称是否都要修改呢?最关键的是,在解析的时候,因为键名称的不确定性,我们取值也会非常麻烦。

如果使用数组,所有的问题都迎刃而解了。改造后如下图所示:

这样,我们要在某个位置插入一段就会非常简单,在解析时,通过循环读取,完全不用考虑每一列的键名称,因为它们压根不需要键名称,就是对象序列而已。

JSON数组支持的数据类型

这个问题前面也有所提及,JSON数组序列的数据类型,可以是字符串、整数、浮点数、布尔、JSON对象等。

当然,JSON数组序列的数据类型,需要是一致的,比如都是字符串、都是整数等。如果数据类型是JSON对象,并不要求JSON对象的结构完全一致。

JSON数组,拥有非常强大的应用

前面提及了数组的简单应用,比如存放表格的列配置,如果您对JSON的数组有了更深的了解,您就会越发发觉JSON数组的应用真是非常强大。

比如,我们可以把关系型数据库表看作一个数组,其每一行就是数组的一个序列对象,对象的内容则是字段的值。

再比如常用数据库的朋友,应该听说过NoSQL和NewSQL,NewSQL和NoSQL不同于传统的关系型数据库,其数据存储的基本单元中,主要就是JSON类型(或改造过的JSON类型),当然数组是其核心。

还是那句话,JSON真是个好东西啊,朋友您说呢?

标签: #json 数组