写在前面:开发中经常用到json和对象的相互转换,下面将列出FastJson中ObjectMapper对象的API的使用

一、maven工程中pom导入
<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.8.3</version>

</dependency>
二、使用
1、创建对象
public static ObjectMapper mapper = new ObjectMapper();
2、初始化
static {
// 转换为格式化的json
mapper.enable(SerializationFeature.INDENT_OUTPUT);
// 如果json中有新增的字段并且是实体类类中不存在的,不报错
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//修改日期格式
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
}
3、对象转为字符串
String jsonStr = mapper.writeValueAsString(user);

System.out.println("对象转为字符串:" + jsonStr);
4、对象转为byte数组
byte[] byteArr = mapper.writeValueAsBytes(user);

System.out.println("对象转为byte数组:" + byteArr);
5、json字符串转为对象
ObjectClass obj = mapper.readValue(jsonStr, ObjectClass.class);

System.out.println("json字符串转为对象:" + obj);
6、byte数组转为对象
ObjectClass obj = mapper.readValue(byteArr,ObjectClass.class);

System.out.println("byte数组转为对象:" + obj);
7、集合转为字符串
String jsonStr = mapper.writeValueAsString(userList);

System.out.println("集合转为字符串:" + jsonStr);
8、字符串转集合
List list = null;
try {
list = mapper.readValue(jsonStr, List.class);
} catch (IOException e1) {
e1.printStackTrace();
}
9、Map转为字符串
String jsonStr = mapper.writeValueAsString(testMap);

System.out.println("Map转为字符串:" + jsonStr);
10、字符串转Map
Map map = null;
try {
map = mapper.readValue(jsonStr, Map.class);
} catch (IOException e1) {
e1.printStackTrace();
}
三、JsonUtils工具类
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;

/**
* @Author Guixing
* @Date 2019/1/7 11:10
* @Description
*/
public class JsonUtils {

public static ObjectMapper mapper = new ObjectMapper();

static {
// 转换为格式化的json
mapper.enable(SerializationFeature.INDENT_OUTPUT);
// 如果json中有新增的字段并且是实体类类中不存在的,不报错
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//修改日期格式
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
}

/**
* 对象转为字符串
*
* @param obj
* @return
*/
public static String Object2Json(Object obj) {
String jsonStr = null;
try {
jsonStr = mapper.writeValueAsString(obj);
} catch (JsonProcessingException e1) {
e1.printStackTrace();
}
return jsonStr;
}

/**
* 对象转为byte数组
*
* @param obj
* @return
*/
public static byte[] object2ByteArray(Object obj) {
byte[] byteArr = new byte[0];
try {
byteArr = mapper.writeValueAsBytes(obj);
} catch (JsonProcessingException e1) {
e1.printStackTrace();
}
return byteArr;
}

/**
* json字符串转为对象
*
* @param jsonStr
* @param beanType
* @param <T>
* @return
*/
public static <T> T json2Object(String jsonStr, Class<T> beanType) {
T t = null;
try {
t = mapper.readValue(jsonStr, beanType);
} catch (IOException e1) {
e1.printStackTrace();
}
return t;
}

/**
* byte数组转为对象
*
* @param byteArr
* @param beanType
* @param <T>
* @return
*/
public static <T> T byteArr2Object(byte[] byteArr, Class<T> beanType) {
T t = null;
try {
t = mapper.readValue(byteArr, beanType);
} catch (Exception e) {
e.printStackTrace();
}
return t;
}

/**
* 集合转为字符串
*
* @param list
* @return
*/
public static String list2String(List list) {
String jsonStr = null;
try {
jsonStr = mapper.writeValueAsString(list);
} catch (JsonProcessingException e1) {
e1.printStackTrace();
}
return jsonStr;
}

/**
* 字符串转集合
*
* @param jsonStr
* @return
*/
public static List json2List(String jsonStr) {
List list = null;
try {
list = mapper.readValue(jsonStr, List.class);
} catch (IOException e1) {
e1.printStackTrace();
}
return list;
}

/**
* Map转为字符串
*
* @param map
* @return
*/
public static String map2String(Map map) {
String jsonStr = null;
try {
jsonStr = mapper.writeValueAsString(map);
} catch (JsonProcessingException e1) {
e1.printStackTrace();
}
return jsonStr;
}

/**
* 字符串转Map
*
* @param jsonStr
* @return
*/
public static Map json2Map(String jsonStr) {
Map map = null;
try {
map = mapper.readValue(jsonStr, Map.class);
} catch (IOException e1) {
e1.printStackTrace();
}
return map;
}

}

————————————————
版权声明:本文为CSDN博主「兴跃神话」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37394874/article/details/85992380

FastJson中的ObjectMapper对象的使用详解的更多相关文章

  1. CorelDRAW中六种复制对象的方法详解

    复制可保证对象的大小一致,复制也是所有操作中最基本的操作.CorelDRAW软件中支持多种复制对象的操作,本教程将详解CorelDRAW中六种复制对象的方法. 方法一 选择复制对象,点击编辑→复制,再 ...

  2. java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解

    java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解 我用的是office word 2016版 XWPFRun是XWPFDocument中的一段文本对象(就是一段文 ...

  3. Java中堆内存和栈内存详解2

    Java中堆内存和栈内存详解   Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,ja ...

  4. vc中调用Com组件的方法详解

    vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGet ...

  5. 【转】angularjs指令中的compile与link函数详解

    这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下   通常大家在 ...

  6. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  7. 串口通信中ReadFile和WriteFile的超时详解!

    源:串口通信中ReadFile和WriteFile的超时详解! 在用ReadFile和WriteFile读写串行口时,需要考虑超时问题.如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFi ...

  8. angularjs指令中的compile与link函数详解

    这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下   通常大家在 ...

  9. Java中的equals和hashCode方法详解

    Java中的equals和hashCode方法详解  转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...

随机推荐

  1. ansible执行带有环境变量的脚本不生效

    1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...

  2. yii2自定义操作按钮

    [ 'class' => 'yii\grid\ActionColumn', 'header' => 'Html::a('操作')',//表单头 'template' => '{vie ...

  3. go语言之指针

    package main import "fmt" //指针 //go语言的指针是非常容易学习的,比c中容易很多,他可以更简单的执行一些任务 //与变量类型,使用前需要定义 fun ...

  4. C++设计考试例题

    1. 采用面向对象的方式编写一个通迅录管理程序,通迅录中的信息包括:姓名,公司,联系电话,邮编.要求的操作有:添加一个联系人,列表显示所有联系人.先给出类定义,然后给出类实现.(提示:可以设计二个类, ...

  5. Blazor入坑指南

    一 为什么用Blazor 原本就是后端程序员, 技术栈基于C#, 懂一点前端jQuery/Html 不管是webAssembly还是ServerSide, 就是想方便地做单页应用, 能wasm自然更好 ...

  6. requeests模块响应体属性和方法重新整理

    下面的属性方法都是基于response对象` import requests response = requests.get('url') 一.url 返回值的url 二. text 获得响应体文本信 ...

  7. python爬虫执行js代码-execjs

    一.安装模块 pip install PyExecJS execjs会自动使用当前电脑上的运行时环境(建议用nodejs,与Phantomjs) 二.简单的使用 import execjs js_ob ...

  8. Cesium专栏-空间分析之地形等高线(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  9. 个人项目开源之Django文件中转站源代码

    可以当做文件中转站或网盘 源代码

  10. IaC云资源编排-Terraform

    Terraform 2019/10/14 Chenxin 整理 转自: https://cloud.tencent.com/developer/article/1469162 IaC与资源编排 IaC ...