JSON的一些基本概念
JSON不是一门编程语言,它更应该被理解为一种数据格式,JSON也不属于JavaScript,也不是只能在JavaScript中使用,它是一种通用的数据格式,很多语言都有解析和序列化JSON的内置能力。
本文基于JavaScript来介绍JSON的一些基本知识。
JSON语法
JSON语法支持3种类型的值
- 简单值:字符串、数值、布尔值和null可以在JSON中出现。特殊地,undefined不可以。
- 对象:一种复杂数据类型,对象表示有序键/值对。每个值可以是简单值,也可以是复杂类型。
- 数组:一种复杂数据类型,数组表示可以通过数值索引访问值的有序列表。数组的值可以是任意类型,包括简单值、对象、甚至其他数组。
简单值
例如:下面这个数值是有效的JSON:
3
下面这个字符串也是有效的JSON:
“hellow JSON!”
JOSN中的字符串必须使用双引号,单引号则会导致语法错误。
对象
在JSON中,对象与JavaScript中的表示有一些不同,下面是JSON中对象的一个例子:
{
"name": "name",
"age": 19
}
对象由一对大括号包围。首先,JSON中的对象没有变量声明(JSON中没有变量),其次,最后没有分号(不需要)。同时,属性名需要用双引号包围起来,不同的属性用逗号分隔,且最后一个属性后不能有逗号。属性的值还可以是复杂数据类型,例如:
{
"name": "name",
"age": 19
"school": {
"name: "name",
"type": "university"
}
}
上述例子中在顶级对象中又嵌入了一个对象,即使整个JSON中有两个属性都叫name
,但它们属于两个不同的对象,因此是允许的,但是同一个对象中不能出现两个相同的属性。
数组
数组同样是一种复杂的数据类型,由一对中括号包围,和对象有一定类似性,每一个元素需要用逗号隔开,最后一个元素后不能有空格,如下:
[
25,
"hi",
true,
{
"name": "name",
"age": 19
}
]
对象和数组通常会作为JSON的顶级结构(尽管不是必须的),以便创建大型复杂数据结构。
JSON对象
JSON对象是JavaScript中的全局对象。它有两个方法stringify()
和parse()
.在简单的情况下,这两个方法分别可以将JavaScript序列化为JSON字符串,以及将JSON解析为原生JavaScript值。
JSON.stringify()
stringify()
方法接收一个JavaScript对象转化为一个JSON字符串:
let book = {
title: "JavaScript高级程序设计",
year: 2020
};
let jsonText = JSON.stringify(book);
console.log(jsonText);
//输出
//{"title":"JavaScript高级程序设计","year":2020}
如果某个对象中有自定义的toJSON方法,那么stringify()
方法就会优先调用toJSON方法:
let obj = {
name: "name",
age: 19,
toJSON: function() {
return this.name;
}
}
let jsonText = JSON.stringify(obj);
console.log(jsonText);
//结果: "name"
这个方法还有第二个参数,在此暂不作深入。
JSON.parse()
parse()
方法接收一个JSON字符串,解析成一个JavaScript对象:
let jsonText = '{"title":"JavaScript高级程序设计","year":2020}'
let book = JSON.parse(book);
console.log(book);
//结果
//book对象
来源:CSDN尚学堂最新2020版Java300集教程课程_Java零基础Java入门必备_Java零基础到高级进阶_Java编程课程_Java核心基础全套必备课程300集_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com
作者:im_pcy
原文:初入JSON,JSON的入门_moreerom的博客-CSDN博客
了解相关知识可以点击: