JSON 简单介绍及使用

一、JSON简介

JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的 js 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
(以上内容来源于百度)

二、JSON格式与查看

通过百度百科我们可以了解 JSON 是干啥的,但是光看这个东西就有点抽象,我们来上点实在的。

Person p = new Person();
p.setName("张大爷");
p.setAge(65);
p.setFriend("马冬梅");

这是在 Java 我们搞一个对象的格式。想必大家都非常习惯,不但看习惯更是用习惯了。
但是在 js 中不这么搞:

var b = new Object(); 
b.name = "张大爷"; 
b.age = 65;
b.friend = "马冬梅"

那我为啥要说 js 呢?那毕竟咱要说的 JSON 是人家的东西,介绍还是要介绍的。好了言归正传,JSON 存储数据的格式来了!

{
	"name" : "张大爷""age" : "65",
	"friend" : "马冬梅"
}

这就是JSON存储数据的格式啦!其实在 js 里面,属性名称是不用加上引号的,但是我们是 Java 程序员,Java 解析的时候,如果没有引号会出问题,所以你懂的。当然了,还有一些更复杂的用法,但是你得先了解基础的。

一个对象, 由一个大括号表示. 
	括号中描述对象的属性 . 通过键值对来描述对象的属性 
	(可以理解为, 大括号中, 包含的是一个个的键值对.) 

格式:
	键与值之间使用冒号连接,多个键值对之间使用逗号分隔.。
	键值对的键应使用引号引住 (通常Java解析时,键不使用引号会报错, 而JS能正确解析。) 
	键值对的值,可以是JS中的任意类型的数据。

JSON 中键值对中值可以是数组,也可以是又一个对象。不过这里需要注意,Java 中数组是用{}来表示数组,但是 JS 用的是 [元素1, 元素2,元素3……元素n] 这样的格式。现在,让我们来看看 JSON 的更复杂些的格式吧!

{
	"name":"张大爷", 
	"age":65, 
	"friend":["张三","李四","王二","麻子",{
 				"name":"马冬梅", 
				"info":"正在寻找老公的路上" }], 
				"hehe":{ 
						"name":"大长刀", 
						"length":"40m" 
						}
 }

可以看到,我们在 friend 值上弄了个数组,然后最后一个元素又嵌套了一个对象。当然了,我们还可以这样一直无限嵌套下去。但是这将会让我们阅读起来有些困难。给大家看个栗子。

{
    "error_code": 0,
    "reason": "Success",
    "result": {
        "data": [
            {
                "content": "有一天晚上我俩一起吃西瓜,老大把西瓜籽很整洁的吐在了一张纸上,\r\n过了几天,我从教室回但宿舍看到老大在磕瓜子,\r\n我就问他:老大,你什么时候买的瓜子?\r\n老大说:刚晒好,说着抓了一把要递给我……",
                "hashId": "bcc5fdc2fb6efc6db33fa242474f108a",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": ""我女朋友气跑了"\r\n"怎么回事?严重吗?你怎么着她了?"\r\n"不严重,我只是很久没用了"",
                "hashId": "03a6095c18e1d6fe7e2c19b2a20d03d1",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "还说神马来一场说走就走的旅行,\r\n工作后就连一场说走就走的下班都不行。",
                "hashId": "10edf75c1e7d0933c91f0f39a28a2c84",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "高速路上堵车,路边葡萄地里有一哥们竟然在偷葡萄,心想太没素质了吧!\r\n不管了我也去,刚溜进葡萄地,那哥们竟问我干嘛,\r\n我撇了一眼反问道你干嘛呢?\r\n那哥们答道摘葡萄呢!\r\n我答道:我也摘葡萄呢!\r\n哥们郁闷了说我摘我家的你呢?\r\n我顿时脸红,哥你家葡萄咋卖呢?",
                "hashId": "bb572bb5b4844badb31012983f7324f5",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "和老婆在街边散步,我手上捏着一张已揉成一团的传单,\r\n走了好一会终于看到个垃圾桶,我赶紧跑过去想扔掉,\r\n没想到老婆从后边一把拉住我说:老公,那个肯定吃不得了,别捡。\r\n我一愣,发现垃圾桶顶盖上放着半个西瓜。",
                "hashId": "7ebccd3bbfaf24e010f9eb3ee68234bd",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "某考生考了个倒数第一,回到家被他爸一顿暴揍,\r\n来到学校老师让他谈谈落后的体会,\r\n学生:“我终于明白了“落后就要挨打”的道理。”",
                "hashId": "4aee2aa6a79c67682f605c4146a8eca4",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "很多人不喜欢朝九晚五的生活,然后开始创业。\r\n最终,他的生活变成了朝五晚九。",
                "hashId": "7b358c4b96cf4a8d82b85545ea8f9603",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "钱这个东西,真是害人精。\r\n小到人与人之间的矛盾,大到国家之间的战争,无不是为了钱。\r\n钱可以把人推上万众瞩目之颠,也可以使人瞬间变成阶下囚。\r\n可是,富人们却没认识到,当钱几辈子花不完时,\r\n挣再多已经没有意义,还不如早日尽点社会责任,\r\n捐助给需要的人,求得个平安幸福。\r\n看到这个的有钱人们呐,你们什么时侯能捐我点啊!",
                "hashId": "94e18075f8c9c8211dfed5f8d6a62983",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "看到一句很好的名言:我们无法拉伸生命的长度,但是我们可以拓展生命的宽度。\r\n我觉得这句话太有道理了!\r\n意思就是:虽然我们无法再长高了,但是我们还可以继续长胖。",
                "hashId": "fd8e364a4c70d46e77c1610879748a9a",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            },
            {
                "content": "女生口中所说的“理工男好萌好棒好想嫁!”,\r\n其实理工男是指“会修电脑、会设置手机、会安家用电器、\r\n会帮做PPT打EXCEL表PS修图、话少、高冷、专一、不和乱七八糟的女生来往、\r\n不爱打扮却又干净清爽、高高瘦瘦、手指纤长、戴黑框眼镜超好看的帅哥”。\r\n其实找个帅哥让他学电脑,再戴个眼镜就OK了。",
                "hashId": "5001c08a3cc8a281b15c467bc15a4911",
                "unixtime": 1418814837,
                "updatetime": "2014-12-17 19:13:57"
            }
        ]
    }
}

如你所见,当 JSON 的文本长度一起来,层级关系就没这么清晰了。这时我们可以借助 JSON 在线工具来解析他!JSON←这是我用的视图工具,给大家看看效果。

复制粘贴,
复制粘贴一波
然后点击视图
在这里插入图片描述
双击图中的 JSON元素就呈现出来了,接下就是想看哪个双击哪个。
在这里插入图片描述
到这里,似乎这些都和我们的 Java 没啥关系,别慌,我这就来讲。

三、Java中使用JSON

使用 JSON 我们需要为项目导入一个 jar 包,此时你有两种选择,Gson 和 FastJson ,前者是 Google 家的,后者是阿里的,在中国,使用 FastJson 的人会更多一些。jar 在哪?戳它 → Gson / FastJson

1. jar 包的引入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 使用引入的库

Gson 和 FastJson 的使用方式略有不同,这里就只演示 FastJson 的实际使用,Gson 的使用我就用文本形式叙述了奥。
在这里插入图片描述
这是将对象转为 JSON 格式。
在这里插入图片描述
运行结果:
在这里插入图片描述

我们再把他转回来。
在这里插入图片描述
运行结果
在这里插入图片描述
怎么样?挺简单叭。
接下来附上 Gson 的使用方式文本:

·转换JSON字符串的步骤:

		1. 引入JAR包 
	 	2. 在需要转换JSON字符串的位置编写如下代码即可: 
	 		String json = new Gson().toJSON(要转换的对象); 
	 		
	 案例:
	 		Book b = BookDao.find(); 
	 		String json = new Gson().toJson(b); 
	 		System.out.println(json);

·将JSON字符串转换为对象

		1. 引入JAR包 
		2. 在需要转换Java对象的位置, 编写如下代码: 
			对象 = new Gson().fromJson(JSON字符串,对象类型.class); 
			
	案例:
		String json = "{……}"; 
		Book book = new Gson().fromJson(json, Book.class); 
		System.out.println(book);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值