初入JSON,JSON的入门

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对象
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值