转JSON数据的基本使用

article/2025/6/18 20:09:09

目录

一、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;

http://chatgpt.dhexx.cn/article/s1CPS0u4.shtml

相关文章

docker重启rabbitmq

1.输入docker ps -a 看看有哪些docker 镜像在运行2.先停止输入再进行删除3.然后我们发现已经没有了&#xff0c;再重新运行 docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 -v pwd/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOSTvho…

为什么我的 postgresql 重启 docker 后数据库就没了?

我们可以使用 docker 直接加载 postgresql 镜像来启动一个新的 postgresql 服务&#xff0c;但是这样做当重启 postgresql 的容器后&#xff0c;我们会发现数据库的内容就没了。 这个时候我们需要使用 docker volume 功能让 postgresql 把数据库放到主机 (host) 的文件夹下来保…

LINUX配置防火墙端口。并防火墙修改之后重启docker

一&#xff1a;linux配置防火墙 通过修改/etc/sysconfig/iptables文件的方式开启端口&#xff0c;如下 二&#xff1a;修改防火墙端口 然后在文件中增加一行。 三&#xff1a;重启防火墙&#xff0c;修改生效 service iptables restart 四&#xff1a;查看防火墙是否开启 ls…

为什么防火墙重启docker容器连接不上网络?

记录一次docker网络连接的问题&#xff1a; docker 容器化技术 linux 主机防火墙重启了之后为啥docker 就不能正常连接网络了&#xff0c;需要重启docker服务&#xff1b; 系统版本&#xff1a;redhat 7.5 docker版本:19.03.13 说起这个问题&#xff0c;就不得不说docker的网络…

Ubuntu18重启docker服务失败问题备忘

环境信息 操作系统&#xff1a;Ubuntu 18.04.2Docker&#xff1a;18.06.1-ce 现象 执行命令service restart docker&#xff0c;提示启动失败&#xff1a; roothedy:~# systemctl restart docker Failed to restart docker.service: Unit docker.service not found.原因 依…

重启docker容器命令

先查看docker容器 docker ps -a 然后用docker attach 命令进入启动的docker

Docker修改daemon.json配置,不需要重启docker或daemon-reload

dockerd reload 配置(不会重启 dockerd&#xff0c;直接修改配置) kill -SIGHUP $(pidof dockerd) # 给 dockerd 发送 SIGHUP 信号&#xff0c;dockerd 收到信号后会 reload 配置查看是否配置成功 docker info | grep -i 配置过滤关键字

不重启docker进程,重新reload加载配置

因为运行了多个容器&#xff0c;重启docker进程时会让所有容器重启&#xff0c;时间不能等&#xff1b;有没有类似nginx一样的reload机制呢&#xff1f; linux 信号认知&#xff1a;SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知…

linux定时任务 定时重启docker容器

Linux添加crontab定时任务 由于公司古董项目&#xff0c;不知原因引发了&#xff0c;容器得每次重启才能正常使用。由于工作进度的原因没办法对老项目进行构架重构。就采取了这个定时任务的方式解决办法。 首先根据网页提供资料&#xff0c;crontab分为两类&#xff0c;系统c…

服务器关机后,重启docker容器

可以先查看被关闭的容器 使用命令 docker container ls -a 然后找到容器&#xff0c;输入 docker container start xxxx&#xff08;容器名称&#xff09; 就可以启动容器了 此外&#xff0c;设置开机自启 docker update --restartalways xxxx(容器名称)

docker启动,重启,关闭命令

启动 systemctl start docker 守护进程重启 sudo systemctl daemon-reload 重启docker服务 systemctl restart docker 重启docker服务 sudo service docker restart 关闭docker service docker stop 关闭docker systemctl stop dockerDocker容器的创建、启动、和停…

Git快速入门-常用命令之交响乐篇

Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更&#xff0c;git reset 撤销commit&#xff0c;git revert 回退远程版本库 1.概述 Git入门系列第三篇&#xff0c;介绍…

开发linux常用指令操作

1. 开发linux常用指令操作 1.文档操作常用指令 命令功能描述ls列出目录cd切换目录pwd显示目前的目录mkdir创建一个新的目录rmdir删除一个空的目录cp复制文件或目录rm移除文件或目录mv移动文件与目录或修改文件与目录的名称 自动补全 在敲出 文件/ 目录 / 命令 的前几个字母…

Git使用教程总和

Git使用教程 【一】下载安装(Windows) 【1】获取Git安装程序 Git官网地址&#xff1a;https://git-scm.com/downloads 因为我们是用Windows系统上的浏览器访问的&#xff0c;Git官网自动之别到了我使用的操作系统&#xff0c;所以右侧直接显示下载使用Windows系统的最新版本(如…

一本面向入门者的Git书

一本面向开发者的Git书《Git学习指南》 如果你在某一团队中从事开发工作&#xff0c;希望了解如何才能有效地使用Git&#xff0c;那么这本书就是一个正确的选择。本书既不是那种偏重于理论的大部头&#xff0c;也不是一本面面俱到的参考书。我们并不打算解释所有的Git命令&…

Git基础操作

文章参考了廖雪峰的Git教程&#xff0c;自己进行了具体的操作学习&#xff0c;实例演示&#xff0c;加以记录学习。 目录 Git简介 Git与GitHub 安装Git 创建版本库 把文件添加到版本库 基本文件操作 修改 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 远程…

项目开发-工具-版本控制Git完整系统化使用说明

Git使用说明 前言1. 起步1.1 关于版本控制1.2 Git 简史1.3 Git 是什么&#xff1f;1.4 命令行1.5 安装 Git1.6 初次运行 Git 前的配置1.7 获取帮助1.8 总结 2. Git 基础2.1 获取 Git 仓库2.2 记录每次更新到仓库2.3 查看提交历史2.4 撤消操作2.5 远程仓库的使用2.6 打标签2.7 G…

三十分钟轻松玩转Git——学会Git就靠这一篇(ง •_•)ง

文章目录 Git入门教程Git简介&#x1f64b;‍♀️Git是什么&#xff1f;&#x1f64b;‍♀️GitHub与码云&#xff1f;&#x1f64b;‍♀️TortoiseGit是什么&#xff1f;&#x1f64b;‍♀️图形化客户端&#xff1f; 安装Git初始化Git&#x1f4cd;1.配置用户信息&#x1f4c…

【推荐】git commit 规范和如何在 commit 里使用 emoji

前言 大家好&#xff0c;我是桃翁&#xff0c;今天给大家带来的是关于 git commit 那些事儿&#xff0c;希望大家喜欢。 对于规范 git commit message 我是分成了两种类型去看待。 对于通用库、开源项目这类多人维护&#xff0c;而且极大可能别人会来看这份代码的&#xff0c…

从git记录中删除大文件

大家一定遇到过在使用Git时&#xff0c;不小心将一个很大的文件添加到库中&#xff0c;即使删除&#xff0c;记录中还是保存了这个文件。以后不管是拷贝&#xff0c;还是push/pull都比较麻烦。今天将工程上传到github时&#xff0c;发现最大只能上传100MB大小文件&#xff0c;在…