Web 开发依赖于 JavaScript,但什么是 JSON,以及 JSON 与 JavaScript 的区别是什么?了解WEB背后的技术对于寻求创新和充分利用可用资源的团队来说非常重要。所有与WEB相关的东西都将使用 JavaScript。但是,JSON 更加细微,可能需要也可能不需要使用它。
JSON 和 JavaScript
在开始比较 JSON 与 JavaScript 之前,需要了解 JSON 是什么以及它与 JavaScript 的关系。来回顾一下 JavaScript 和 JSON 是什么,然后比较和对比它们,看看它们的区别是什么。
什么是 JavaScript?
JavaScript 与 HTML 和 CSS 一样,是万维网的核心技术之一。 JavaScript 开始是为了使网页栩栩如生。没有它,现代网页设计将是静态和无聊的。 JavaScript 是一种编程语言。它可能是最重要的编程语言,因为 Web 开发的各个方面都建立在它之上,未来其比重也将越来越重。本文不会花很多时间详细说明 JavaScript 是什么。
什么是 JSON
JSON 是 JavaScript Object Notation
的缩写。 JSON JavaScript 也是如此吗?不完全是。 JSON 是一种独立于任何编程语言的数据格式,源自于 JavaScript。大部分现代编程语言都包含可以生成和解析 JSON 数据的方法。
关于 JSON 的几点说明:
- 它是一种用于存储和传输数据的轻量级格式
- 语法是自描述的,便于人类阅读和理解
- 通常,当数据从服务器发送到网页时使用 JSON,作为API的传输数据格式
JSON 数据以两种基本方式构造:key/value
对或此类对的集合,或有序列表。JSON 允许存储或传输六种不同类型的数据,包括:
Array
Null
Boolean
String
Number
Object
如上所述,JavaScript 和 JSON 是两个完全不同的东西。虽然 JSON 是从 JavaScript 派生的,但两者在很多方面没有可比性。但是,可以将 JSON 与 JavaScript 对象进行比较,这两者关系更密切,在前端开发中也是经常接触的。
什么是 JavaScript 对象?
JavaScript 对象也用于存储数据,所有 JavaScript 值实际上都是对象,除了原始数据类型 null
、Boolean
、 number
、 string
、 symbol
、undefined
。JavaScript 对象可能会变得复杂,因为它们可以包含许多不同的原始数据组合。
JavaScript 对象也以 key/value
对的形式构成,它们可以通过对象构造器语法、对象字面量、构造器和原型链创建, JavaScript 对象是可变的。这意味着可以更改 key/value
对中各个键的值。
JSON 对比JavaScript 对象
在了解 JSON 和 JavaScript 对象的不同之处之前,重要的是要了解 JSON 和 JavaScript 对象的相似之处远大于它们的不同之处。JSON 源自 JavaScript 对象文字语法。事实上,最简单的解释是 JSON 是 JavaScript 对象文字语法,但有更多限制。
JSON 和 JavaScript 对象都是人类可读的。它们都为用户提供了一种结构化数据的方法,并且它们都可以用作另一个来源的来源。当谈到差异时,JSON 和 JavaScript 对象在几个关键方面有所不同:
- 语言依赖
- 纯文本
String Vs Object
语言依赖
JSON 和 JavaScript 对象之间最大的区别之一是对编程语言的依赖。JavaScript 对象完全依赖于 JavaScript,它们不能与任何其他编程语言一起使用。另一方面,超过 50 种不同的编程语言支持 JSON,包括流行的语言,例如:
- Go
- Ruby
- Perl
- C
- C#
- Python
- PHP
- JavaScript
这种广泛的支持使 JSON 成为数据存储和传输的灵活选择。
纯文本
JSON 数据只能以文本形式呈现,不能向 JSON 添加注释或其他代码行,这种特性是为什么这么多其他编程语言可以生成和解析 JSON 的原因。JavaScript 对象可以包含其他代码,例如函数和方法。
String Vs Object
JSON 和 JavaScript 对象之间的最后一个主要区别是它们的呈现方式。 JSON 以字符串形式呈现。这些被称为 JSON 字符串。 JavaScript 对象可以包含字符串,但顾名思义,它们是对象而不是字符串。对象比字符串更复杂。
总结
JSON 和 JavaScript 对象之间的差异是细微的,也是前端开发中经常会用到的两种类型,特别需要注意的是 JSON 不存在深拷贝浅拷贝的问题,而对象需要考虑这个问题,因此为避免对象深拷贝带来的问题,通常将对象与JSON相互转换。