关于 JSON 数据格式的完全使用指南

本文详细介绍了JSON的语法、解析、序列化,包括简单值、对象、数组的使用,强调JSON是JavaScript的子集,但作为一种数据格式,被多种语言支持。文中还讨论了JSON对象、序列化选项,如过滤结果、字符串缩进、toJSON()方法,以及解析选项中的还原函数。
摘要由CSDN通过智能技术生成

前言

本文将对 JSON 的语法、解析、序列化进行详细的说明,帮助大家掌握 JSON 的使用方式。 如果文中有不对、疑惑或者错字的地方,欢迎在评论区留言指正🌻

一、JSON简介

在 JSON 之前,XML 曾经一度成为互联网上传输数据的事实标准。第一代 Web服务很大程度上是以 XML 为基础的,以服务器间通信为主要特征。可是,XML 也并非没有批评者。有的人认为 XML 过于冗余和啰唆。为解决这些问题,也出现了几种方案。不过 Web 已经朝着它的新方向进发了。

2006年,Douglas Crockford 在国际互联网工程任务组(IETF,The Internet Engineering Task Force)制定了 JavaScript 对象简谱(JSON, JavaScript Object Notation)标准,即 RFC 4627。但实际上,JSON 早在 2001 年就开始使用了。JSON 是 JavaScript 的严格子集,利用 JavaScript 中的几种模式来表示结构化数据。Crockford 将 JSON 作为替代 XML 的一个方案提出,因为 JSON 可以直接传给 eval() 而不需要创建 DOM。

理解 JSON 最关键的一点是要把它当成一种数据格式,而不是编程语言。 JSON 不属于 JavaScript,它们只是拥有相同的语法而已。JSON 也不是只能 在 JavaScript 中使用,它是一种通用数据格式。很多语言都有解析和序列 化 JSON 的内置能力。

二、语法

JSON 语法支持表示 3 种类型的值。

  • 简单值 :字符串、数值、布尔值和 null 可以在 JSON 中出现,就像在 JavaScript 中一样。特殊值 undefined 不可以。* 对象 :第一种复杂数据类型,对象表示有序键/值对。每个值可以是 简单值,也可以是复杂类型。* 数组 :第二种复杂数据类型,数组表示可以通过数值索引访问的值的 有序列表。数组的值可以是任意类型,包括简单值、对象,甚至其他数组。JSON 没有变量、函数或对象实例的概念。JSON 的所有记号都只为表示结构化数据,虽然它借用了 JavaScript 的语法,但是千万不要把它跟 JavaScript 语言混淆。

1. 简单值

最简单的JSON可以是一个数值。例如,下面这个数值是有效的JSON:

5 

这个 JSON 表示数值 5。类似地,下面这个字符串也是有效的 JSON:

"Hello CoderBin!" 

JavaScript 字符串与 JSON 字符串的主要区别是,JSON 字符串必须使用双引号(单引号会导致语法错误)。

布尔值和 null 本身也是有效的 JSON 值。不过,实践中更多使用 JSON 表示比较复杂的数据结构,其中会包含简单值。

2. 对象

对象使用与 JavaScript 对象字面量略为不同的方式表示。以下是 JavaScript 中的对象字面量:

let person = {name: 'CoderBin',age: 18
} 

虽然这对 JavaScript 开发者来说是标准的对象字面量,但 JSON 中的对象必须使用双引号把属性名包围起来。下面的代码与前面的代码是一样的:

let object = {"name": "CoderBin","age" : 18
}; 

而用 JSON 表示相同的对象的语法是:

{"name": "CoderBin","age": 18
 } 

与 JavaScript 对象字面量相比,JSON 主要有两处不同。

  • 没有变量声明( JSON 中没有变量)。
  • 最后没有分号(不需要,因为不是 JavaScript 语句)。

同样,用引号将属性名包围起来才是有效的 JSON。属性的值可以是简单值或复杂数据类型值,后者可以在对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值