大家好,我是IT修真院深圳分院的学员,一枚正直善良的JAVA程序员。
今天给大家带来的是关于JSON的分享。
1.背景介绍
JSON是由道格拉斯·克罗克福特在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。在这之前当时通用的数据交换语言是XML,但是道格拉斯·克罗克福特认为XML的生成和解析都过于麻烦,所以他提出一种更加简化的格式,就是我们现在使用的JSON。
JSON(JavaScript Object Notation, JS对象表示法) 是一种轻量级的数据交换格式。它基于 ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式,但是也使用了类似于C语言家族的习惯来存储和表示数据。简洁和清晰的层次结构易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。这些特性使JSON成为理想的数据交换格式。
2.知识剖析
在 JS 语言中,一切都是对象。因此,任何程序支持的类型都可以通过JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
对象表示为键值对
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 键/值对
JSON 键值对是用来保存 JS 对象的一种方式,
和 JS 对象的写法也大同小异,
键/值对组合中的键名写在前面并用双引号 "" 包裹,
使用冒号 : 分隔,然后紧接着值:
{"firstName": "Json"}
这很容易理解,等价于这条 JavaScript 语句:
{firstName : "Json"}
3.常见问题
1.JSON 与 JS 对象的关系?
2.JSON在javaweb中的运用
4.解决方案
JSON 与 JS 对象的关系?
很多人搞不清楚 JSON 和 Js 对象的关系,
甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,
它使用文本表示一个 JS 对象的信息,本质是一个字符串。
它和xml一样都是一种数据交换格式
var obj = {a: 'Hello', b: 'World'};
//这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello","b": "World"}';
//这是一个 JSON 字符串,本质是一个字符串
JSON 和 JS 对象如何相互转换
要实现从对象转换为 JSON 字符串,使用JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'});
//结果是'{"a": "Hello", "b":"World"}'
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a":"Hello", "b": "World"}');
//结果是{a: 'Hello', b: 'World'}
5.编码实战
让我们来看看这个例子的代码。
6.扩展思考
7.参考文献
链接:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
作者:百度百科
链接:http://www.runoob.com/json/json-intro.html
作者:菜鸟教程
8.更多讨论
1. 打了@ResponseBody 标签之后,所有类型return都会变成json对象传输给前端吗?
如果单纯只添加@ResponseBody的话,会自动转化成JSON数据,如果在对应的类上添加下面的类和注解的话,还可以转化成XML格式。下图可以看到一个对比结果。
importjavax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
2. @ResponseBody 能直接返回基本数据类型给前端吗?
@ResponseBody返回的数据类型,基本上都是JSON数据类型,也就是JS对象的形式。需要经过转换才能使用。如果传递的是字符串的话,前端接收的就是字符串。
3.javaweb中,XML与JSON的优劣
https://www.cnblogs.com/SanMaoSpace/p/3139186.html
这位博主讲的比较详细深入,大家可以去看看。
PPT链接:戳这里看PPT
腾讯视频:腾讯视频
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧
网友评论