json对象和json数组(js怎么定义json数组)

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

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

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

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

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

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

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

json对象和json数组(js怎么定义json数组)

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

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

JSON数组才是JSON的精华所在

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

json对象和json数组(js怎么定义json数组)

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

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

有什么麻烦呢?

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

json对象和json数组(js怎么定义json数组)

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

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

json对象和json数组(js怎么定义json数组)

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

JSON数组支持的数据类型

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

json对象和json数组(js怎么定义json数组)

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

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

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

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

json对象和json数组(js怎么定义json数组)

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论