这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【生成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链接 视频链接

php 生成复杂json数据,生成json的几种方式相关推荐

  1. Web 开发人员必备的随机 JSON 数据生成工具

    在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...

  2. JS的jsoneditor,用来操作Json格式的界面;json-editor用来根据json数据生成界面

    1.jsoneditor https://github.com/josdejong/jsoneditor https://jsoneditoronline.org/ 效果如下: 2.json-edit ...

  3. JAVA对象JSON数据互相转换的四种常见情况

    这篇文章主要介绍了JAVA对象JSON数据互相转换的四种常见情况,需要的朋友可以参考下 1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码代码如下:     JSONArray ...

  4. JS解析json数据(json字符串和数组之间相互转换)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  5. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  6. java 导出excel教程,[Java教程]导出大量数据到Excel的一种方式

    [Java教程]导出大量数据到Excel的一种方式 0 2012-07-09 17:00:11 在Java Web开发中,经常需要导出大量的数据到Excel,使用POI.JXL直接生成Excel,很容 ...

  7. jsp页面数据加载的两种方式

    JSP数据加载的两种方式 第一种: 三层架构写在controller的页面跳转前面,set到request域中 request.setAttribute("name", list) ...

  8. MySQL数据导入导出的两种方式

    文章目录 前言 一.使用Navicat Premium数据库可视化工具的企业管理器导入导出数据 1.企业管理器导入步骤: 2.企业管理器导出步骤: 二.cmd方式导入导出数据 1.cmd导入步骤: 2 ...

  9. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  10. 数据归一化处理的两种方式

    数据归一化处理的两种方式 import pandas as pd import numpy as np test_data = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3 ...

最新文章

  1. 数据治理展示血缘关系的工具_Nebula Graph 在微众银行数据治理业务的实践
  2. Science Robotics近日刊登CMU重大突破,无需手术,普通人就能用意念操控机械臂!...
  3. mongo mysql 条件查询效率_mongodb查询条件对查询效率的影响
  4. [JSOI2008]星球大战
  5. Eclipse 自动注释的设置
  6. c语言程序设计班档案管理系统报告,C语言班级档案管理系统
  7. 字符串匹配——BMH算法
  8. 张朝阳:知识直播是长久的事情 商业模式将水到渠成
  9. java xml 合并_Java中合并XML文档的合并
  10. 类的static成员并用其实现一个单例模式
  11. Python+OpenCV:Feature Matching + Homography to find Objects
  12. 关于学习的反思(上)---系网开发记(2)
  13. 一种低成本的机械动平衡方法 郑氏橡皮泥动平衡法
  14. Linux系统通过console口连接交换机
  15. python实现超级玛丽小游戏(动图演示+源码分享)
  16. react中jsx行内样式(style)的国定写法、jsx双花括号{{}}写法的解释
  17. 创业与投资 -谈谈融资这个事儿(下)
  18. 有关信息安全的三个案例
  19. wordpress主题免费- wordpress插件以及主题下载
  20. 科技助农、航空报国、产业兴邦——钱旺正式发布“雨田一号”农用无人机

热门文章

  1. shell学习-斐波那契数列
  2. 共享单车接入百度地图,科技进步为“国民素质”背书
  3. Python实现深度优先遍历和广度优先遍历
  4. opengl画立方体、朝向问题
  5. python去掉符号_python去掉符号
  6. 免打轴~半自动制作文字类游戏视频的翻译字幕♥ || V1.1 ET/BT Python实例
  7. C++最佳实践之常用库介绍
  8. Excel日历控件实现下拉选取日期含VB代码实现
  9. 调制解调器(Modem)
  10. 狼山会项目库:第一期——个体创业者学习网络赚钱项目的基础必修课