老版本的Jackson使用的包名为org.codehaus.jackson,而新版本使用的是com.fasterxml.jackson

Jackson主要包含了3个模块:

  • jackson-core
  • jackson-annotations
  • jackson-databind
    其中,jackson-annotations依赖于jackson-core,jackson-databind又依赖于jackson-annotations。

Jackson有三种方式处理Json:

  1. 使用底层的基于Stream的方式对Json的每一个小的组成部分进行控制
  2. 使用Tree Model,通过JsonNode处理单个Json节点
  3. 使用databind模块,直接对Java对象进行序列化和反序列化

通常来说,我们在日常开发中使用的是第3种方式,有时为了简便也会使用第2种方式,比如你要从一个很大的Json对象中只读取那么一两个字段的时候,采用databind方式显得有些重,JsonNode反而更简单。

package founder.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper; /**
* @ClassName: JsonUtils
* @author hanwl
* @date 2019年01月22日
* @Description: TODO
*/
public class JsonUtils { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); /**
* Json格式的字符串向JavaBean转换,传入空串将返回null
* @param strBody Json格式的字符串
* @param c 目标JavaBean类型
* @return JavaBean对象
* @throws JsonParseException
* @throws JsonMappingException
* @throws IOException
*/
public static <T> T json2Object(String strBody, Class<T> c) throws JsonParseException, JsonMappingException, IOException{
if (strBody == null || "".equals(strBody)) {
return null;
}
else {
return OBJECT_MAPPER.readValue(strBody, c);
}
} /**
* Json格式的字符串向JavaBean转换,传入空串将返回null
* @param strBody Json格式的字符串
* @param c 目标JavaBean类型
* @return JavaBean对象, 如果解析失败返回 null
*/
public static <T> T decodeJson(String strBody, Class<T> c) {
if (strBody == null || "".equals(strBody)) {
return null;
}
else {
try {
return OBJECT_MAPPER.readValue(strBody, c);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
} /**
*
* @param strBody
* @param c
* @return
* @throws JsonParseException
* @throws JsonMappingException
* @throws IOException
*/
public static Object json2ComplexObject(String strBody) throws JsonParseException, JsonMappingException, IOException{
if (strBody == null || "".equals(strBody)) {
return null;
}
else {
// 每个属性的实际类型是string
return OBJECT_MAPPER.readValue(strBody, Object.class);
}
} /**
* Json格式的字符串向JavaBean List集合转换,传入空串将返回null
* @param strBody
* @param c
* @return
* @throws JsonParseException
* @throws JsonMappingException
* @throws IOException
*/
@SuppressWarnings("unchecked")
public static <T> List<T> json2ObjectList(String strBody,Class<T> c) throws JsonParseException, JsonMappingException, IOException{
if (strBody == null || "".equals(strBody)) {
return null;
}
else {
JavaType javaType = OBJECT_MAPPER.getTypeFactory().constructParametricType(ArrayList.class, c);
return (List<T>) OBJECT_MAPPER.readValue(strBody, javaType);
}
} /**
* Json格式的字符串向JavaBean List集合转换,传入空串将返回null
* @param strBody
* @param c
* @return 对象列表,解析失败返回 null
*/
@SuppressWarnings("unchecked")
public static <T> List<T> decodeJsonToList(String strBody,Class<T> c) {
if (strBody == null || "".equals(strBody)) {
return null;
}
else {
JavaType javaType = OBJECT_MAPPER.getTypeFactory().constructParametricType(ArrayList.class, c);
try {
return (List<T>) OBJECT_MAPPER.readValue(strBody, javaType);
} catch (IOException e) {
e.printStackTrace(); return null;
}
}
} /**
* Json格式的字符串向List<String>集合转换,传入空串将返回null
* @param strBody
* @return
* @throws JsonParseException
* @throws JsonMappingException
* @throws IOException
*/
public static List<String> json2List(String strBody) throws JsonParseException, JsonMappingException, IOException{
return json2ObjectList(strBody, String.class);
} /**
* Object转为Json格式字符串的方法
* @param o
* @return
* @throws JsonProcessingException
*/
public static String object2Json(Object o) throws JsonProcessingException{
return OBJECT_MAPPER.writeValueAsString(o);
} /**
* Object转为Json格式字符串的方法
* @param o
* @return 对象的json字符串,如果处理过程中出错,返回null
*/
public static String encodeObject(Object o) {
try {
return OBJECT_MAPPER.writeValueAsString(o);
} catch (JsonProcessingException e) {
e.printStackTrace();
return null;
}
}
}

com.fasterxml.jackson工具类的更多相关文章

  1. Java json工具类,jackson工具类,ObjectMapper工具类

    Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...

  2. jackson工具类 对象转字符串 -- 字符串转对象

    这个一个json的工具类.用的是jackson,当然还有谷歌的gosn,阿里的fastjson ,但是jackson的感觉还是最成熟(网上大神说的...) 实现的功能很简单,对象转字符串  字符串转简 ...

  3. Jackson 工具类使用及配置指南

    目录 前言 Jackson使用工具类 Jackson配置属性 Jackson解析JSON数据 Jackson序列化Java对象 前言 Json数据格式这两年发展的很快,其声称相对XML格式有很对好处: ...

  4. 使用jackson工具类把对象或集合转为JSON格式

    jackson使用方法: 1.加入jar包: jackson-annotations-2.2.2.jar jackson-core-2.2.2.jar jackson-databind-2.2.2.j ...

  5. Jackson工具类使用及配置指南、高性能配置(转)

    Jackson使用工具类 通常,我们对JSON格式的数据,只会进行解析和封装两种,也就是JSON字符串--->Java对象以及Java对象--->JSON字符串. public class ...

  6. Jackson工具类(各种转换)

    首先要在项目中引入jackson的jar包(在此不做说明) 下面直接上代码 public class JacksonUtils { private final static ObjectMapper ...

  7. jackson工具类有动态属性过虑功能

    在业务应用中经常会有指定属性序列化json的需求,C#中这个功能很容易就可以解决:使用lambda重新构造一下匿名对象就可以了.一行代码搞定.java是这样解决的. public JsonMapper ...

  8. 用jackson封装的JSON工具类

    package hjp.smart4j.framework.util; import com.fasterxml.jackson.databind.ObjectMapper; import org.s ...

  9. Jackson 对象与json数据互转工具类JacksonUtil

    1,User对象 package com.st.json; import java.util.Date; /** * @Description: JSON序列化和反序列化使用的User类 * @aut ...

随机推荐

  1. Java数据解析之JSON

    文章大纲 一.JSON介绍二.常见框架介绍与实战三.Studio中GsonFormat插件使用四.项目源码下载(含参考资料)五.参考文档   一.JSON介绍 1. 简介   JSON 的全称是 Ja ...

  2. 使用py2exe将python脚本转换成exe可执行文件

    Python(wiki en  chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...

  3. row_number() over()分页查询

    1.首先讲下row_number() over() 是干什么的? 是一个分析函数,会在数据表生成一个排序列. 案例SQL: select ROW_NUMBER() over(order by book ...

  4. Oracle 安装步骤、安装中错误处理、完整卸载

    /*************************************************以下ORACLE服务端安装************************************* ...

  5. 关掉那些windows上因权限无法关闭的服务

    ProcessExplorer 下载地址 :https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer 以管理员身 ...

  6. 安装mysql8.0.12

    安装mysql8.0.12 https://blog.csdn.net/zwj1030711290/article/details/80039780 问题1:忘记记录日志打印的密码就把窗口给关了 解决 ...

  7. Active Directory Replication(复制)

    KCC(The Knowledge Consistency Checker)知识一致性检查器是一个内置的程序,在所有与管理器上运行,为林创建复制拓扑.默认,KCC15分钟间隔运行一次,根据当时存活的最 ...

  8. Carthage入门篇-安装和使用

    在iOS开发过程中,用到最多的三方库管理工具也许是Cocoapods.Cocoapods会自动为你创建一个workspace,然后自动将你要用到的三方库集成到Project中,而整个过程,你只需要对P ...

  9. Elastic Stack-Elasticsearch使用介绍(五)

    一.前言     前4篇将Elasticsearch用法的API和原理方面东西介绍了一下,相信大家对Elasticsearch有了一定的认知,接下我们主要从索引的建立到后期的一些优化做一些介绍: 二. ...

  10. HTML基础知识个人总结

    [学习的网站是主要是W3school,还加上一些其他搜索学习到的内容,仅在博客做个人整理] 一.标签——尖括号围成的关键词,成对出现. ※使用时必须符合标签嵌套规则 1. (1) <!DOCTY ...