JAVA SpringBoot2 关于 JSON 数据处理,基于 ObjectMapper
1,当今的互联网开发行业,JSON 这种数据格式越来越成为网络开发的主流,尤其是前后端分离之后,几乎百分百的数据交互方式都是采用 JSON
2,由于 SpringMVC 框架的封装性,我们日常开发中只需要在 控制器 加上 @ResponseBody 注解,那么该类中方法返回的值就会自动转化为 JSON 格式响应给请求方,这让我们省去可很多麻烦
3,但是如果我们在程序中需要自己转化应该怎么操作呢,SpringBoot 内置了一个 ObjectMapper 的类,我们可以直接注入使用
4,使用方式如下,首先声明一个实体类 User,使用 lombok 库
package com.hwq.collection.model; import lombok.Getter;
import lombok.Setter;
import lombok.ToString; @Getter
@Setter
@ToString
public class User {
private Integer id;
private String name;
private Integer sex;
}
5,常用的两种转化方式
package com.hwq.collection; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hwq.collection.model.User;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List; @RunWith(SpringRunner.class)
@SpringBootTest
public class CollectionApplicationTests { /**
* 注入 JSON 的操作类
*/
@Autowired
ObjectMapper jsonMapper; private String jsonStr; /**
* 将数据转化为 JSON 字符串,这个很简单
*/
@Before
public void before() throws IOException {
List<User> userList = new LinkedList<User>();
for (int i = 1; i <= 20; i++) {
User user = new User();
user.setId(1);
user.setName("张" + i);
user.setSex(i % 2);
userList.add(user);
}
jsonStr = jsonMapper.writeValueAsString(userList);
// System.out.println(jsonStr);
} /**
* 将 JSON 字符串映射成对应的 类 集合
* 注意:转化为类时,方法的第二个参数直接写 类.calss 即可
* 但是如果是转化为 List 集合,方法的第二个参数需要用 TypeReference 类
*/
@Test
public void contextLoads() throws IOException{
List<User> userList1 = jsonMapper.readValue(jsonStr, new TypeReference<List<User>>() {});
System.out.println(userList1.get(0).getClass()); // User
System.out.println(userList1.get(0).getId()); // 1
// System.out.println(userList1);
} /**
* 当然,如果我们只知道 JSON 字符串要转化为 List 集合,但是并不知道 List 内元素的具体类型
* 或者返回的类型是参吃不齐的数据,这时方法的第二个参数我可以直接写 List.class
* 这样返回的就是一个 LinkedHashMap 集合数据,这种方式更加灵活
*/
@After
public void after() throws IOException {
List<LinkedHashMap> userList2 = jsonMapper.readValue(jsonStr, List.class);
System.out.println(userList2.get(0).getClass()); // LinkedHashMap
System.out.println(userList2.get(0).get("id")); // 1
// System.out.println(userList2);
} }
JAVA SpringBoot2 关于 JSON 数据处理,基于 ObjectMapper的更多相关文章
- ObjectMapper用于将java对象转换为json格式数据以及JSONObject对象解析json格式数据
ObjectMapper objectMapper = new ObjectMapper(); //反序列化的时候如果多了其他属性,不抛出异常 objectMapper.configure(Deser ...
- jackson java对象和json对象的互相转换
概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...
- json相关类库,java对象与json相互转换
有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...
- fastJson java后台转换json格式数据
什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
- 【多端应用开发系列1.1.1 —— Android:使用新浪API V2】服务器Json数据处理——Json数据概述
[前白] 一些基础的东西本系列中就不再详述了,争取尽量写些必不可少的技术要点. 由于本系列把Web Service 构建放到了第二部分,Android项目就采用新浪微博API v2作为服务器端. [原 ...
- JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法
Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...
- Java 下的 JSON库性能比较:JSON.simple
JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上它 ...
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...
随机推荐
- ssh_exchange_identification: read: Connection reset by peer
vim /etc/hosts.deny 删除ip 借鉴:https://www.sunnyos.com/article-show-81.html
- Centos7使用yum快速安装ansible
ansible功能简介:ansible可以实现批量系统配置.批量软件部署.批量文件拷贝.批量运行命令等功能.主要基于ssh实现连接各个被控制端 yum默认安装的ansible,常用的配置文件有两个,一 ...
- python selenium-webdriver 元素操作之鼠标操作(四)
上节内容主要说明了元素的定位,本节内容说要说对元素的操作,元素的操作分为两部分一部分是鼠标的操作,另一种是对键盘对元素的操作,下面我们主要讲解一下鼠标对元素的操作. webdriver 模块中几种比较 ...
- reset Cisco 2960 password
详见:http://www.cahilig.net/2014/04/14/how-reset-cisco-2960-switch-password-without-losing-your-config ...
- C语言之二维数组与指针
二维数组: ][]; 二维数组实质上也就是一维数组,a[2][3]可看做一个2个元素的一维数组,这2个元素又是另一个数组,在内存中,它的排布如下: #include "stdio.h&quo ...
- office 32-bit components 2010 的卸载
卸载方法:MsiExec.exe /X {90140000-0043-0000-1000-0000000FF1CE}
- eclipse项目上传服务器注意事项
1.先准备服务器环境 2 数据库导入,tomcat安装 3 开放服务器端口,配置网络 4.修改本地代码修改为发布版本,即ip,账号密码数据库等 5 变动的信息应该写在配置文件或者一个全局产量中,这样才 ...
- python基础知识11---函数1
函数 一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处 ...
- Linux运维宝典:最常用的150个命令汇总
一.线上查询及帮助命令(2个) 二.文件和目录操作命令(18个) 三.查看文件及内容处理命令(21个) 四.文件压缩及解压缩命令(4个) 五.信息显示命令(11个) 六.搜索文件命令(4个) 七.用户 ...
- 怎么安装Scrapy框架以及安装时出现的一系列错误(win7 64位 python3 pycharm)
因为要学习爬虫,就打算安装Scrapy框架,以下是我安装该模块的步骤,适合于刚入门的小白: 一.打开pycharm,依次点击File---->setting---->Project---- ...