ObjectMapper使用
时间:2019-09-04
本文章向大家介绍ObjectMapper使用,主要包括ObjectMapper使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在项目中使用到了ObjectMapper,故研究了一下。现将自己的几个测试用例和大家分享一下~
首先在pom.xml文件中,加入依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.3</version> </dependency>
创建一个实体类XwjUser:
public class XwjUser implements Serializable { private static final long serialVersionUID = 1L; private int id; private String message; private Date sendTime; // 这里手写字母大写,只是为了测试使用,是不符合java规范的 private String NodeName; private List<Integer> intList; public XwjUser() { super(); } public XwjUser(int id, String message, Date sendTime) { super(); this.id = id; this.message = message; this.sendTime = sendTime; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Date getSendTime() { return sendTime; } public void setSendTime(Date sendTime) { this.sendTime = sendTime; } public String getNodeName() { return NodeName; } public void setNodeName(String nodeName) { NodeName = nodeName; } public List<Integer> getIntList() { return intList; } public void setIntList(List<Integer> intList) { this.intList = intList; } @Override public String toString() { return "XwjUser [id=" + id + ", message=" + message + ", sendTime=" + sendTime + ", intList=" + intList + "]"; } }
先创建一个ObjectMapper,然后赋值一些属性:
public static ObjectMapper mapper = new ObjectMapper(); static { // 转换为格式化的json mapper.enable(SerializationFeature.INDENT_OUTPUT); // 如果json中有新增的字段并且是实体类类中不存在的,不报错 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); }
1、对象与json字符串、byte数组
@Test public void testObj() throws JsonGenerationException, JsonMappingException, IOException { XwjUser user = new XwjUser(1, "Hello World", new Date()); mapper.writeValue(new File("D:/test.txt"), user); // 写到文件中 // mapper.writeValue(System.out, user); //写到控制台 String jsonStr = mapper.writeValueAsString(user); System.out.println("对象转为字符串:" + jsonStr); byte[] byteArr = mapper.writeValueAsBytes(user); System.out.println("对象转为byte数组:" + byteArr); XwjUser userDe = mapper.readValue(jsonStr, XwjUser.class); System.out.println("json字符串转为对象:" + userDe); XwjUser useDe2 = mapper.readValue(byteArr, XwjUser.class); System.out.println("byte数组转为对象:" + useDe2); }
运行结果:
对象转为字符串:{ "id" : 1, "message" : "Hello World", "sendTime" : 1525163446305, "intList" : null, "nodeName" : null } 对象转为byte数组:[B@3327bd23 json字符串转为对象:XwjUser [id=1, message=Hello World, sendTime=Tue May 01 16:30:46 CST 2018, intList=null] byte数组转为对象:XwjUser [id=1, message=Hello World, sendTime=Tue May 01 16:30:46 CST 2018, intList=null]
注意,对象转json字符串时,对象中的NodeName首字母是大写,转出来是小写
2、list集合与json字符串
@Test public void testList() throws JsonGenerationException, JsonMappingException, IOException { List<XwjUser> userList = new ArrayList<>(); userList.add(new XwjUser(1, "aaa", new Date())); userList.add(new XwjUser(2, "bbb", new Date())); userList.add(new XwjUser(3, "ccc", new Date())); userList.add(new XwjUser(4, "ddd", new Date())); String jsonStr = mapper.writeValueAsString(userList); System.out.println("集合转为字符串:" + jsonStr); List<XwjUser> userListDes = mapper.readValue(jsonStr, List.class); System.out.println("字符串转集合:" + userListDes); }
运行结果:
集合转为字符串:[ { "id" : 1, "message" : "aaa", "sendTime" : 1525164096846, "intList" : null, "nodeName" : null }, { "id" : 2, "message" : "bbb", "sendTime" : 1525164096846, "intList" : null, "nodeName" : null }, { "id" : 3, "message" : "ccc", "sendTime" : 1525164096846, "intList" : null, "nodeName" : null }, { "id" : 4, "message" : "ddd", "sendTime" : 1525164096846, "intList" : null, "nodeName" : null } ] 字符串转集合:[{id=1, message=aaa, sendTime=1525164096846, intList=null, nodeName=null}, {id=2, message=bbb, sendTime=1525164096846, intList=null, nodeName=null}, {id=3, message=ccc, sendTime=1525164096846, intList=null, nodeName=null}, {id=4, message=ddd, sendTime=1525164096846, intList=null, nodeName=null}]
3、map与json字符串
@SuppressWarnings("unchecked") @Test public void testMap() { Map<String, Object> testMap = new HashMap<>(); testMap.put("name", "merry"); testMap.put("age", 30); testMap.put("date", new Date()); testMap.put("user", new XwjUser(1, "Hello World", new Date())); try { String jsonStr = mapper.writeValueAsString(testMap); System.out.println("Map转为字符串:" + jsonStr); try { Map<String, Object> testMapDes = mapper.readValue(jsonStr, Map.class); System.out.println("字符串转Map:" + testMapDes); } catch (IOException e) { e.printStackTrace(); } } catch (JsonProcessingException e) { e.printStackTrace(); } }
运行结果:
Map转为字符串:{ "date" : 1525164199804, "name" : "merry", "user" : { "id" : 1, "message" : "Hello World", "sendTime" : 1525164199805, "intList" : null, "nodeName" : null }, "age" : 30 } 字符串转Map:{date=1525164199804, name=merry, user={id=1, message=Hello World, sendTime=1525164199805, intList=null, nodeName=null}, age=30}
4、修改转换时的日期格式:
@Test public void testOther() throws IOException { // 修改时间格式 mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); XwjUser user = new XwjUser(1, "Hello World", new Date()); user.setIntList(Arrays.asList(1, 2, 3)); String jsonStr = mapper.writeValueAsString(user); System.out.println("对象转为字符串:" + jsonStr); }
运行结果:
对象转为字符串:{ "id" : 1, "message" : "Hello World", "sendTime" : "2018-05-01 16:44:06", "intList" : [ 1, 2, 3 ], "nodeName" : null }
原文地址:https://www.cnblogs.com/aspirant/p/11459148.html
- 03-移动端开发教程-CSS3新特性(下)
- 大数据面试题整理
- 02-移动端开发教程-CSS3新特性(中)
- 强悍!Java 9 中的9个新特性
- 神经网络反向传播梯度计算数学原理
- Spring Boot 1.5.10 发布:修复重要安全漏洞!!!
- 从零开始写项目第三篇【在线聊天和个人收藏夹】
- TiDB 源码阅读系列文章(六)Select 语句概览
- 从零开始写项目第四篇【搭建Linux环境】
- salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
- salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)
- 深入nDPI
- 44个Java代码性能优化总结
- 干货:Java正确获取客户端真实IP方法整理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android实现文件下载功能
- Android实现可以展开的TextView
- 详解android 用webview加载网页(https和http)
- Android自定义网络连接工具类HttpUtil
- Android Studio时间选择器的创建方法
- Android 拦截返回键事件的实例详解
- Android自定义可点击的ImageSpan并在TextView中内置View
- Android开发实现带清空按钮的EditText示例
- Android用于校验集合参数的小封装示例
- TextView中URL等指定特殊字符串与点击事件解析
- Android开发实现仿京东商品搜索选项卡弹窗功能
- Android开发中button按钮的使用及动态添加组件方法示例
- Kotlin开发的一些实用小技巧总结
- Android使用URLConnection提交请求的实现
- android原生JSON解析实例