json 语法

ads

大家好,欢迎来到停止重构的频道

本期我们讨论Json

Json是一种优秀的文本数据格式在我们介绍的很多技术设计中,都会偏向使用Json作为数据格式。

我们将从以下几点展开讨论:

1、Json介绍

2、Json规范详解

3、Json的应用场景

Json 介绍

首先介绍Json,Json是一种文本数据格式,来源于编程语言JavaScript的对象语法。

但实质上,Json是独立于JavaScript的,两者并无强关联。

简单地说,Json就是一种文本规范或者说是一种字符串规范,图中所示的都是符合Json规范的文本。

Json这种文本规范有什么好处呢?

Json的优点是可以简单灵活地表示树形结构的数据通过简单的一条字符串,就可以记录多层结构的数据。

当然,可以记录树形数据的文本规范不仅只有JsonXML这种文本数据格式也可以

且大部分情况下,XML和Json是可以相互转换的

在文本不大、结构不复杂的情况下,Json更简洁,更易读一些。

但是,当文本特别大、或结构特别复杂时XML在流式处理、易读性上更胜一筹比如HTML、SVG实质上是建立在XML之上的。

另外,需要特别说清楚的是,Json文本实质上是一条字符串。

所以在程序中使用Json数据时,需要通过特定的方法转换为对应的对象变量才能使用。

以JavaScript为例,需要将Json字符串转换为JavaScript的对象变量后才能使用,JavaScript的对象变量也同样可转换为Json字符串。

所以,Json只是一种文本规范至于程序中的Json对象、Json变量,则根据不同编程语言、不同Json库会有操作、表达上的差异。

且并不是所有编程语言都原生支持Json对象,一些编程语言需要引入第三方Json库才能使用。

Json 规范详解

接下来是Json规范详细介绍,Json支持6种类型的值

分别是字符串、数字、布尔值、null、对象、数组

先说明4种常规的值类型。

字符串是包含在双引号内的多个字符。

如果字符串内包含双引号,则需要使用转义。

数字可以是整数、浮点数(小数)。

布尔值是true、false。

null为空值。

这4种常规类型的值是不允许内嵌其他值的所以Json文本可以仅含有一个字符串或一个数字。

然后是2种允许内嵌其他值的值类型

对象是键/值对的字典,或者可以理解为哈希表。

需要包含在一对{}之内单个对象内的多个键值对用逗号隔开。

键值对的键必须为字符串值则可以是Json支持的6种值的任意一种,且单个对象内的多个无需统一类型

数组是需要包含在一对[]之内的,单个数组内的多个值用逗号隔开。

数组内的值可以是Json支持的6种值的任意一种,且单个数组内的多个值无需统一类型

得益于对象、数组这两种允许内嵌的值类型Json文本能表示复杂的树形数

且为了提升Json文本的扩展性,一般都会采用对象或数组作为最外层结构。

所以我们看到的绝大多数Json文本都是包含在一对[]或{}中的。

数组或对象的长度、内嵌层深度在Json标准中并没有限制但是一些Json库是可能存在长度限制的。

另外,Json文本中多余的空格、换行不会有实质上的影响,仅仅是为了方便阅读

Json 应用场景

接下来是Json的应用场景,如前文所述。

Json这种文本规范一般适合数据量不大,且需要记录树形结构的数据,或需要灵活扩展数据时使用。

我们习惯在后端接口参数/返回数据、云计算任务、配置文件等场景使用Json文本。

在程序中使用Json对象作为数据池,在我们的低代码内核中使用Json文本记录程序逻辑等等。

很多场景我们都会优先考虑Json,简单、灵活的同时,也很易读。

一些文档型数据库,如ElasticSearch,据也是Json形式的。

当然,Json很多时候只是一种选择并不一定是当前场景的最优解。

而且很多人反而会因为Json灵活性很大,Json变量无需显式定义就可以随意增加数据,认为当项目比较大、开发人员比较多时,会让代码更加混乱、更难维护。

这个无法争辩,但我们想说的是。

其实任何技术工具都不会直接对项目质量造成影响的,工具只会影响生产效率。

对项目质量造成影响的是项目过程而约束项目过程的是大多数人看不上眼的规范

在我们前面讨论前端、后端架构时都详细讨论过了。

规范不完备或团队无法遵守规范,么无论使用什么工具,代码都将是混乱难维护的。

总结

最后,Json虽然不是框架、工具。而仅仅是一种设计,但是却能简单直接、灵活地表示复杂的树形结构数据。

尽管很多编程语言也有类似的对象变量,Json只是它们的简化版。

但是仍然惊叹于这样的设计。

表达方式的改变,可能会引起某种质变。

如一种优秀的低代码表达方式,将会给编程效率带来质变。

这也是我们近些年一直在探索的事情。







最后编辑于:2024/1/22 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com