资讯专栏INFORMATION COLUMN

傻傻弄不清楚的JSON?

xialong / 2754人阅读

摘要:不同的语言中,它被理解为对象,纪录,结构,字典,哈希表,有键列表,或者关联数组值的有序列表。数组是值的有序集合。在前后端分离的大势是前段和后端的一种数据交换形式,不仅仅是前后端的一种数据交换形式,还是系统之间进行数据交换的一种形式。

作为一名开发人员,我们时常跟JSON打交道,但对于JSON却有这不少的疑惑,但平常也就是停留在使用的角度上。今天我们就来走进JSON。 我们首先引入两个问题,这两个问题将帮助我们理解JSON。

什么是JSON?

为什么需要JSON或者JSON能帮助我们做什么?

第一个问题的答案就隐藏在JSON的名字当中,JSON: JavaScript Object Notation. 我们重点关注Notation这个词,前两个词我们很熟悉。

Notation: 符号,记号,谱号。 
我们是否可以将JSON理解为JavaScript对象的符号形式呢?
带着这个疑问,我查看了JSON的官网: 

请注意标红的部分,这是关键。我们在强调一遍,一种轻量级的数据交换格式。

根据以上的求索,我们可以对JSON做出以下论断:

JSON是JavaScript对象的表示形式

JSON是一种轻量级的数据交换形式

从JSON的官网可以看到JSON有两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)

"名称/值"对的集合,好怪的说法啊,JSON脱胎于JavaScript,简单的说,JSON就是JavaScript的对象和数组。
那么JSON是JavaScript的对象吗?并不是,说JSON是JavaScript的对象和数组只是为了方便理解JSON而已,JavaScript Object Notation, JavaScript Object Notation,我们强调两遍,Notaiton在牛津字典的解释是 a system of signs or symbols used to represent information---即一种代表某种信息的符号。叫 JavaScript Object Notation的原因也许是JSON的作者道格拉斯同志在设计JSON时参考了JavaScript Object的对象语法而已。
JSON的形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以 {左括号 开始, }右括号 结束。每个“名称”后跟一个 :冒号 ;“‘名称/值’ 对”之间使用 ,逗号 分隔。

数组是值(value)的有序集合。一个数组以 [左中括号 开始, ]右中括号 结束。值之间使用 ,逗号 分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

接下来,我们从数据交换形式的角度来解释JSON,数据交换是谁和谁做交换呢? web客户端和服务端吧。在前后端分离的大势,JSON是前段和后端的一种数据交换形式,不仅仅是前后端的一种数据交换形式,还是系统之间进行数据交换的一种形式。

为什么需要JSON呢?
那就要请出XML同志了,在没有JSON同志之前,都使用XML进行数据交换,但是XML并不简单,有着各种各样的数据约束,越搞越复杂,我们希望数据交换形式尽可能的简单一些,不想再去了解那些让人头痛的那一大堆的复杂规范。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75076.html

相关文章

  • webpack多页应用架构系列(七):开发环境、生产环境傻傻分不清楚

    摘要:开发环境和生产环境都拥有的配置,但在细节上有所不同,比如说,又比如说中的和参数。更重要的是,实际上开发环境和生产环境的配置文件的绝大部分都是一致的,对于这一致的部分来说,我们坚决要消除冗余,否则后续维护起来不仅麻烦,而且还容易出错。 本文首发于Array_Huang的技术博客——实用至上,非经作者同意,请勿转载。原文地址:https://segmentfault.com/a/11900...

    paulquei 评论0 收藏0
  • 入门node.js你必须知道那些事

    摘要:入门你必须知道的那些事最基本的一些操作和概念用执行一段代码在命令行中用切换到桌面创建一个文件夹和并用命令切换到这个文件夹创建一个文件并写上简单的代码在命令行中输入命令行会输出引用文件的方式采用了规范通过来引入一个文件新建文件并在文件中引入执 入门node.js你必须知道的那些事 最基本的一些操作和概念 用node执行一段js代码 在命令行中用cd切换到桌面 创建一个文件夹和并用cd命...

    learn_shifeng 评论0 收藏0
  • 傻傻分也分不清楚property和attribute

    摘要:最近,一个小伙伴问了我一个问题和的区别当时我想了又想,很不好意思的说了我不知道,所以,抽了个事件好好的利用了一下度娘和总结了一下。 最近,一个小伙伴问了我一个问题property和attribute的区别?当时我想了又想,很不好意思的说了我不知道,所以,抽了个事件好好的利用了一下‘度娘’和‘Google’总结了一下。度娘搜索到的有用信息知乎中的讨论csdn搜索的结果,Google发现的...

    SimpleTriangle 评论0 收藏0
  • C++入门—namespace使用傻傻分不清楚&C++中函数参数也可以配备胎&a

    摘要:使用输入输出更方便,不需增加数据格式控制,比如整形,字符等缺省参数备胎缺省参数是声明或定义函数时为函数的参数指定一个默认值。此外,函数重载要求参数不同,而跟返回值没关系。 ...

    pingan8787 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<