目录

一、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&lt;Book&gt;</a></li><li><a href="${path}/book/querySingleBook/1">查询单个-querySingleBook-返回Book</a></li><li><a href="${path}/book/queryAllListMap">查询所有-queryAllListMap-返回List&lt;Map&lt;String,Object&gt;&gt;</a></li><li><a href="${path}/book/queryPager1">混合模式-queryPager1-返回Map&lt;String,Object&gt;</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数据的基本使用相关推荐

  1. python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)

    前言 之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样: value = data['store']['book'][0] ...

  2. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

  3. JSon数据查询---Jlinq

    LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...

  4. java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...

    我正在现有应用程序之上创建一个RESTAPI.其中一个特性接受JSON数据以及用户上传的文件. 我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI? 我让JSON部件工作,并使用curl ...

  5. C++通过HTTP请求Get或Post方式请求Json数据(转)

    原文网址:https://www.cnblogs.com/shike8080/articles/6549339.html #pragma once #include <iostream> ...

  6. AngularJS学习笔记(3)——通过Ajax获取JSON数据

    通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...

  7. php JSON数据格式化输出方法

    php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...

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

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

  9. Android之解析Android Map地图返回的Json数据

    先上一下需要解析的Json数据: {    "results" : [       {          "address_components" : [   ...

  10. [IOS]UIWebView实现保存页面和读取服务器端json数据

    如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧! 操作步骤: 1.创建SingleViewApplication应用,新建 ...

最新文章

  1. Akka源码分析-Remote-发消息
  2. pybind 传递指针
  3. Linux创建线程读取双口数据,linux环境下读写一次双口ram尽然要十几个毫秒。(附驱动代码)...
  4. ITK:图像重新取样
  5. kvm cobbler无人值守批量安装操作系统
  6. mysql scope runtime_maven scope provided和runtime的例子
  7. 无意中发现Markdown,最终解放了我
  8. ADO,ADO.NET,OLEDB,ODBC连接数据库的区别
  9. Linux中如何针对用户及组设置磁盘配额
  10. minnet sample
  11. Java基础-标识符
  12. 修改了DNS服务器网速慢,网络速度缓慢怎么办?轻松一键修改DNS设置让网速提升五倍...
  13. 全网最全的 Java 各类技术栈架构图汇总(建议收藏)
  14. 【JavaScript】牛客编程:实现一个打点计时器
  15. 【学术论文写作】02 Tone and Diction
  16. 补充记录vue3中rrweb-player组件实现网页录屏的一个BUG解决
  17. QuickCam Gev 2.0 开发
  18. DS SIMULIA CST STUDIO SUITE 2021.03 SP3 Update Only x64
  19. .NET MAUI 开发电子木鱼(上)
  20. 数据分析和数据可视化网站资源

热门文章

  1. 【Java】爬虫,能不能再详细讲讲?万字长文送给你!
  2. Spring入门——入门helloSpring
  3. APP开发外包注意事项
  4. 以计算机作为类 触摸板作为接口,给新手,笔记本电脑、接口、鼠标和触摸板的保养!...
  5. 【Java】在Java中实现自动化脚本
  6. wps迷你版表格内文字缩放_如何在Google表格中使用迷你图
  7. python缺省函数写法
  8. Qt 之 自定义提示信息框—迅雷风格
  9. 2008中国手机客户端市场发展状况浅析
  10. 回馈粉丝,抽奖送一部华为2020新款手机