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 ...
随机推荐
- Linux安装Java
下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 解压 解压缩安装包 t ...
- 关于符号匹配题的一些思考过程--含cin.getline()函数的一些基本原理
刚刚拿到题目的时候,还没啥感觉,就是觉得要用到if--else就可以了,但是一联想到现在是在学栈,那么是不是要用到栈呢? 一.那么先看看题目吧 给定一串字符,不超过100个字符,可能包括括号.数字.字 ...
- SpringCloud基于消息总线的配置中心
@https://www.cnblogs.com/ityouknow/p/6931958.html Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点 ...
- C++中关于字符串的一些API
参考资料:http://www.runoob.com/cplusplus/cpp-strings.html 一.前言 不管是在编写何种语言程序,需要从输入设备中获取数据的需求很频繁,在这类频繁的应用场 ...
- 《python for data analysis》第二章,美国1880-2010年出生人口姓名的数据分析
<利用python进行数据分析>第二章的姓名例子,代码.整个例子的所有代码集成到了一个文件中,导致有些对象名如year同时作为了列名与行名,会打印warning,可分不同的part依次运行 ...
- redis过期机制
Redis会自己回收清理不用的数据吗? 如果能,那如何配置? 如果不能,如何防止数据累加后大量占用存储空间的问题? 之前一直接触Redis不是很深入,最近项目当中遇到一个需求场景,需要清空一些存放在R ...
- EF框架引用问题
安装EF框架时,从NuGet上安装 EF 安装完成以后仍然报错误 这个错误 是因为EF实体数据模型未引用System.data.entity 这个DLL ,记一下以防止以后忘记
- 记一次java电话面试
答案补充中... 一.java基础 1.简述java的几种基本数据类型 JAVA的基本数据类型有:byte.char.boolean.short.int.long.float.double 2.什么是 ...
- tcpdf 将网页生成pdf
需求:需要将HTML页面生成PDF文档 开发语言:PHP 使用TCPDF第三方类库进行生成,下载地址:http://sourceforge.net/projects/tcpdf/ 核心代码: publ ...
- linux Table is marked as crashed and should be repaired
linux Table is marked as crashed and should be repaired 2014-07-28 10:34 1282人阅读 评论(0) 收藏 举报 分类: da ...