这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【生成json的几种方式】
【修真院java小课堂】生成json的几种方式
大家好,我是IT修真院武汉分院第17期的学员汪天驰,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java任务2,深度思考中的知识点——生成json的几种方式
(1)背景介绍:
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。
JSON是由道格拉斯·克罗克福特在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。
(2)知识剖析:
为什么要用json?
JSON类似于XML、比XML更小、更快、更容易解析。但同时XML也有它不可替代性,应根据使用场景进行更合适的选择
两者不同的是,json没有结束标签,读写速度更快,使用数组,不使用保留字,能够使用内建的JavaScript eval()方法解析。
JSON语法简单,很容易理解,并且对象信息自描述,数据传输量小不占用宽带
JSON支持的语言包括C、C#、Java、JavaScript,PHP,Python、Ruby等等
对于Ajax应用程序来说,JSON比XML更快捷,更易用
JSON的基本语法
1.并列的数据之间用逗号(,)分隔
2.映射用冒号(:)表示
3.映射的集合用大括号({})表示
4.并列数据的集合用方括号表示([])表示
下面是一个json格式的例子:
{ "studentList": [{
"id": 187,
"studentName": "王",
"stuNum": 666,
"phone": 123456,
"wish": "天天向上"} ] }
可以看到它们是以键值对的形式表现,这里有个规定键值对中: 键必须用双引号括起来,值可以是数字、字符串(需要在双引号中),布尔值、数组、对象、null,共6种类型。
为什么推荐使用JSONTAGLIB来处理JSON
gson它提供了toJason()方法将对象转换成Json字符串
gson也可以反序列化,提供了fromJson()方法来实现从Json相关对象到Java实体的方法。
在使用@ResponseBody注解的方式时,
如果在控制器方法上标注该注解,那么方法返回的对象不会经过视图解析器的渲染,而是根据HTTP Request Header的Accept字段的内容,转换为指定的格式,写入到Response对象的body数据区中,如果没有额外的配置,那么就会返回json格式的数据
所以json-taglib的好处就体现出来了:
1.使用json-taglib,在控制器中的代码更加简洁,易读
2.使用json-taglib更加灵活,如果以后需要更改json数据格式,只需要更改jsp页面即可,不需要改动控制器代码
(3)常见问题:
Json运用
读取 JSON 字符串
用 eval() 处理 JSON 字符串
json可以以数组传递,也可以以对象传递,,返回的json格式,是一个数组json,然后里面含有对象,这是json常见的格式。后来经过php的处理,结构又发生了变化,最外层是一个对象了,里面是数组和对象。
在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:
JSON字符串:
var str1 = '{ "name": "haorooms", "sex": "man" }';
JSON对象:
var str2 = { "name": "haorooms", "sex": "man" };
在RPC远程调用时,或者提供给外部访问接口,一般数据交互格式通常为JSON
提供移动APP接口
(4)编码实战:
(5)拓展思考:
json和xml的区别
XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
XML的缺点
A.XML文件庞大,文件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
json的优缺点
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性 JSON格式目前在Web Service中推广还属于初级阶段。
(6)参考文献:
(7)更多讨论:
Q1:JSON、XML解析有那些方式
A1:JSON解析方式(阿里巴巴fastjson、谷歌gson,jackJson) XML解析方式(dom、sax、pul)
Q2:是否所有的技术都支持JSON?
A2:是的,几乎所有的数据交换都支持JSON。
Q3:使用jQuery如何进行一个JSON调用?
A3:如在一个MVC中,可通过“getEmployee”函数返回employ的JSON对象。
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
PPT链接 视频链接