Jackson 介绍

Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”。
Jackson框架包含了3个核心库:streaming,databind,annotations。

Jackson Home Page:https://github.com/FasterXML/jackson
Jackson Wiki:http://wiki.fasterxml.com/JacksonHome
Jackson doc: https://github.com/FasterXML/jackson-docs
Jackson Download Page:http://wiki.fasterxml.com/JacksonDownload

Jackson可以做什么

xml、csv和java对象互转

Jackson的使用

Jackson提供了三种可选的Json处理方法:流式API(Streaming API) 、树模型(Tree Model)、数据绑定(Data Binding)。

从使用角度来看,比较一下这三种处理Json的方式的特性:
Streaming API:是效率最高的处理方式(开销低、读写速度快,但程序编写复杂度高)
Tree Model:是最灵活的处理方式
Data Binding:是最常用的处理方式

Jacson常用配置选项

/**序列化配置*/
ObjectMapper mapper = new ObjectMapper();
// 设置日期处理格式
SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd”);
mapper.setDateFormat(dateFormat);
// 美化json输出
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
//忽略空属性
mapper.setSerializationInclusion(Include.NON_EMPTY); /**反序列化配置*/
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

常见问题

1. json字符串转java对象,json中存在一个字段,但java对象中没有该字段,会抛出UnrecognizedPropertyException

mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

package test.json;  

import java.io.Serializable;  

import org.apache.commons.lang.builder.ToStringBuilder;
import org.junit.Test; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; public class TestJson { @Test
public void jsonToClass() {
String s = "{\"id\":1,\"name\":\"test\",\"flag\":true,\"age\":19}"; ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TE t;
try {
t = mapper.readValue(s, TE.class);
System.out.println(ToStringBuilder.reflectionToString(t));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} class TE implements Serializable { /**
*
*/
private static final long serialVersionUID = 1L;
private long id;
private String name;
private boolean flag;
//private int age; public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
/*public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}*/ }

参考

JackSon fasterxml学习

Java中常见的json序列化类库 - Jackson的更多相关文章

  1. java中常见的json解析方法、库以及性能对比

    常见的json解析有原生的JSONObject和JSONArray方法,谷歌的GSON库,阿里的fastjson,还有jackson,json-lib. Gson(项目地址:https://githu ...

  2. java中可定制的序列化过程 writeObject与readObject

    来源于:[http://bluepopopo.iteye.com/blog/486548] 什么是writeObject 和readObject?可定制的序列化过程 这篇文章很直接,简单易懂.尝试着翻 ...

  3. Java中常见的5种WEB服务器介绍

    这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

  4. Java中常见的Exception种类

    Java中常见的Exception种类 1.ClassNotFoundException 2.IOException 3.NoSuchFieldException 4.NoSuchMethodExce ...

  5. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  6. Java中常见的注解

    Java中常见的注解 1.JDK自带的注解@Override  @Deprecated  @Suppvisewarnings 常见第三方注解 Spring:@Autowired  @Service  ...

  7. 在SpringMVC中,当Json序列化,反序列化失败的时候,会抛出HttpMessageNotReadableException异常, 当Bean validation失败的时候,会抛出MethodArgumentNotValidException异常,因此,只需要在ExceptionHandler类中添加处理对应异常的方法即可。

    在SpringMVC中,当Json序列化,反序列化失败的时候,会抛出HttpMessageNotReadableException异常, 当Bean validation失败的时候,会抛出Method ...

  8. Java中常见的异常类型

    一. Java中常见的异常类 异常类 说明 ClassCastException 类型准换异常 ClassNotFoundException 未找到相应类异常 ArithmeticException ...

  9. Java 中常见的 final 类

    Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Com ...

随机推荐

  1. leetcode_3FizzBuzz的一些思考

    题目很简单,给定一个正整数n,如果n能整除3的话往list里加入Fizz,如果n能整除5的话往list里面加入Buzz,如果即能整除3又能整除5的话,加入FizzBuzz,代码也很简单 public ...

  2. VS2019配置C+++mingW32配置

    两个安装教程博客 http://t.sg.cn/yq22mn http://t.sg.cn/wsavo0 基于调试报错,是因为文件夹是中文,贴一个详细的博客:http://t.sg.cn/3j5e4z

  3. LeetCode 004 Median of Two Sorted Arrays

    题目描述:Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...

  4. MongoEngine模块

    今儿,接到老的的要求,要把新功能的数据存放在Mongo里.虽然一直都有听过Mango的鼎鼎大名,但是那也只是见过没用过,跟个小白没啥区别.在加上功能急需,没办法只能赶鸭子上架先上再说.下面这篇就是我赶 ...

  5. PyQt学习随笔:QWidget的QFont的kerning、Antialiasing属性用途

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 引言 在Designer中,QWidget的font属性有两个比较陌生 ...

  6. CobaltStrike 生成office宏病毒进行钓鱼攻击

    关于WORD宏: 在百度百科上有: 宏是一个批量处理程序命令,正确地运用它可以提高工作效率.微软的office软件允许用户自己编写,叫VBA的脚本来增加其灵活性,进一步扩充它的能力.如完打开word文 ...

  7. leetcode计划(二)——ps:复习面试题计划+锻炼计划

    5.24周日 下周是新的一周,发布任务 一.leetcode计划题目:300,416,494,474(前四个动态规划)(plus:860),232,225,155(后三个栈) 建议之后可以先做:cs- ...

  8. ripple Failed to load resource: the server responded with a status of 404 (Not Found)

    在VS2015中使用Cordova + typescript开发中,遇到个问题. 在javascript console 中提示: Failed to load resource: the serve ...

  9. Nginx 转发时的一个坑,运维居然让我背锅!!

    最近遇到一个 Nginx 转发的坑,一个请求转发到 Tomcat 时发现有几个 http header 始终获取不到,导致线上出现 bug,运维说不是他的问题,这个锅我背了. 新增的几个 header ...

  10. 学习笔记:四边形不等式优化 DP

    定义 & 等价形式 四边形不等式是定义在整数集上的二元函数 \(w(x, y)\). 定义:对于任意 \(a \le b \le c \le d\),满足交叉小于等于包含(即 \(w(a, c ...