转JSON数据的基本使用
目录
一、JSON概念
二、常用类型
三、基本使用
四、@JsonIgnore&@JsonIgnoreProperties()
五、 解决JSON日期格式化问题:@JsonFormat
一、JSON概念
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
二、常用类型
任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。
三、基本使用
3.1 添加jackson相关依赖
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.3</version>
</dependency>
3.2 在spring-mvc.xml文件添加如下内容
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJackson2HttpMessageConverter"/></list></property></bean><bean id="mappingJackson2HttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><!--处理中文乱码以及避免IE执行AJAX时,返回JSON出现下载文件--><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value><value>text/json;charset=UTF-8</value><value>application/json;charset=UTF-8</value></list></property>
</bean>
3.3 注解介绍:
注解-@ResponseBody:将Controller方法的返回结果直接写入到 response对象的 body中,通常用来返回JSON数据或者XML数据。需要注意的是,使用此注解之后,Controller方法的返回值不会再走视图解析器,而是直接写到输出流中,
添加位置:
添加在方法上:只对当前方法起作用。
添加在类上:对该类里面的所有方法都起作用。
注解-@RestController:等同于@Controller和@ResponseBody;
添加位置:只能添加在类上面,该类里面的所有方法返回的都是JSON数据。
3.4 在请求处理方法中添加@ResponseBody注解,将返回结果直接转换成JSON
@RequestMapping("/loadFwxxToJson")
@ResponseBody
public Fwxx loadFwxxToJson(@ModelAttribute Fwxx fwxx) {
...
}
注:此请求处理方法返回的已经不是视图了
3.5 测试方法:
Book实体类型:通过书本id查询单个书本方法,返回单个书本对象;
List<Book>类型:分页查询(模糊)书本方法,返回Book类型的List集合;
List<Map<String,Object>>类型:查询所有书本方法,返回Map类型的List集合;
返回混合类型;
定义方法
List<Book> queryPager(Book book);Book querySingleBook(Integer bookId);@MapKey("bookId")List<Map<String,Object>> queryAllListMap();
编写sql
<select id="queryPager" resultType="com.zking.ssm.model.Book">select <include refid="baseSql"/> from tb_book where true<if test="null != bookName and '' != bookName">and book_name like concat('%',#{bookName},'%')</if>order by book_id desc
</select>
<select id="querySingleBook" resultType="com.zking.ssm.model.Book">select <include refid="baseSql"/>from tb_book where book_id = #{bookId}
</select>
<select id="queryAllListMap" resultType="java.util.Map">select <include refid="baseSql"/>from tb_book
</select>
controller层
@Controller
//@RestController//==@Component + @ResponseBody
@RequestMapping("/book")
public class BookController {@Autowiredpublic IBookService bookService;@RequestMapping("/toPage/{page}")public String toPage(@PathVariable String page){return page;}@ResponseBody //将数据结果转换成json@RequestMapping("/queryPager")public List<Book> queryPager(Book book,HttpServletRequest request){PageBean pageBean = new PageBean();pageBean.setRequest(request);return bookService.queryPager(book,pageBean);}@ResponseBody@RequestMapping("/querySingleBook/{bookId}")public Book querySingleBook(@PathVariable Integer bookId){return bookService.querySingleBook(bookId);}@ResponseBody@RequestMapping("/queryAllListMap")public List<Map<String,Object>> queryAllListMap(){return bookService.queryAllListMap();}//混合模式:返回分页查询的总数据量和数据集合。@ResponseBody@RequestMapping("/queryPager1")public Map<String,Object> queryPager1(Book book,HttpServletRequest request){PageBean pageBean = new PageBean();pageBean.setRequest(request);//获取数据集合List<Book> bookList = bookService.queryPager(book, pageBean);//获取总数据量Integer total = pageBean.getTotal();//定义map集合Map<String,Object> jsonMap = new HashMap<>();jsonMap.put("bookList",bookList);jsonMap.put("total",total);return jsonMap;}//@ResponseBody //不走视图解析器,直接返回JSON字符串@RequestMapping("/toIndex")public String toIndex(){return "index";}
}
前端页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/static/comment/head.jsp"%>
<html>
<head><title>Title</title>
</head>
<body><ol><li><a href="${path}/book/queryPager">分页查询-queryPager-返回List<Book></a></li><li><a href="${path}/book/querySingleBook/1">查询单个-querySingleBook-返回Book</a></li><li><a href="${path}/book/queryAllListMap">查询所有-queryAllListMap-返回List<Map<String,Object>></a></li><li><a href="${path}/book/queryPager1">混合模式-queryPager1-返回Map<String,Object></a></li></ol>
</body>
</html>
测试打印的数据是json格式
四、@JsonIgnore&@JsonIgnoreProperties()
@JsonIgnore:此注解用于属性或者方法上(最好是属性上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解,一般标记在属性或者方法上,返回的json数据即不包含该属性。
@JsonIgnore // 忽略该字段private String bookName;
@JsonIgnoreProperties():一般标记在属性或者方法上,返回的json数据即不包含该属性
@JsonIgnoreProperties({"bookName","bookPrice"})
public class Book {private Integer bookId;private String bookName;private Float bookPrice;
}
五、 解决JSON日期格式化问题:@JsonFormat
@JsonFormat(pattern = "yyyy-MM-dd HH:mi:ss",timezone="GMT+8")private Date creataDate;
转JSON数据的基本使用相关推荐
- python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)
前言 之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样: value = data['store']['book'][0] ...
- 深入分析jquery解析json数据
我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...
- JSon数据查询---Jlinq
LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...
- java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...
我正在现有应用程序之上创建一个RESTAPI.其中一个特性接受JSON数据以及用户上传的文件. 我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI? 我让JSON部件工作,并使用curl ...
- C++通过HTTP请求Get或Post方式请求Json数据(转)
原文网址:https://www.cnblogs.com/shike8080/articles/6549339.html #pragma once #include <iostream> ...
- AngularJS学习笔记(3)——通过Ajax获取JSON数据
通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...
- php JSON数据格式化输出方法
php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...
- Web 开发人员必备的随机 JSON 数据生成工具
在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...
- Android之解析Android Map地图返回的Json数据
先上一下需要解析的Json数据: { "results" : [ { "address_components" : [ ...
- [IOS]UIWebView实现保存页面和读取服务器端json数据
如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧! 操作步骤: 1.创建SingleViewApplication应用,新建 ...
最新文章
- Akka源码分析-Remote-发消息
- pybind 传递指针
- Linux创建线程读取双口数据,linux环境下读写一次双口ram尽然要十几个毫秒。(附驱动代码)...
- ITK:图像重新取样
- kvm cobbler无人值守批量安装操作系统
- mysql scope runtime_maven scope provided和runtime的例子
- 无意中发现Markdown,最终解放了我
- ADO,ADO.NET,OLEDB,ODBC连接数据库的区别
- Linux中如何针对用户及组设置磁盘配额
- minnet sample
- Java基础-标识符
- 修改了DNS服务器网速慢,网络速度缓慢怎么办?轻松一键修改DNS设置让网速提升五倍...
- 全网最全的 Java 各类技术栈架构图汇总(建议收藏)
- 【JavaScript】牛客编程:实现一个打点计时器
- 【学术论文写作】02 Tone and Diction
- 补充记录vue3中rrweb-player组件实现网页录屏的一个BUG解决
- QuickCam Gev 2.0 开发
- DS SIMULIA CST STUDIO SUITE 2021.03 SP3 Update Only x64
- .NET MAUI 开发电子木鱼(上)
- 数据分析和数据可视化网站资源