Jackson所有的操作都是通过ObjectMapper对象实例来操作的,可以重用这个对象实例。

首先定义一个实例:

ObjectMapper mapper = new ObjectMapper();

定义一个Student类:

	package jackson;

	import java.util.Date;

	public class Student {

		private String name;
private int age;
private String position;
private Date createTime; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getPosition() {
return position;
} public void setPosition(String position) {
this.position = position;
} public Date getCreateTime() {
return createTime;
} public void setCreateTime(Date createTime) {
this.createTime = createTime;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", position="
+ position + ", createTime=" + createTime + "]";
} }

准备一个字符串:

String jsonString = "{\"name\":\"king\",\"age\":21}";

常规操作: 字符串转对象

     mapper.readValue(jsonString,Student.class);
System.out.println(student);

打印输出结果:

Student [name=king, age=21, position=null, createTime=null]

常规操作: 对象转字符串

		student.setCreateTime(new Date());
String json = mapper.writeValueAsString(student);
System.out.println(json);

打印输出结果:

{"name":"king","age":21,"position":null,"createTime":1524819355361}

如何改变输出的日期字段格式?

两种方式:一种SimpleDateFormat,另外一种通过在属性字段注解

在Student.java属性字段createTime注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")


import com.fasterxml.jackson.annotation.JsonFormat; public class Student { private String name;
private int age;
private String position;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; //省略get,set
}

打印输出结果:

{"name":"king","age":21,"position":null,"createTime":"2018-04-27 09:00:56"}

8小时时间差问题:上面打印结果发现,时间少8小时。

解决方法: 注解上增加时区。

public class Student {

	private String name;
private int age;
private String position;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime; //省略get,set
}

打印输出结果:

{"name":"king","age":21,"position":null,"createTime":"2018-04-27 17:07:33"}

其他的一些奇怪的配置

  1. 输出格式化,就是分行显示,该功能慎用
    mapper.configure(SerializationFeature.INDENT_OUTPUT, true);

    打印输出样式

    {
    "name" : "king",
    "age" : 21,
    "position" : null,
    "createTime" : "2018-04-27 17:29:01"
    }
  2. 异常忽略

    字符串转对象时,如果字符串中字段在对象中不存在,则忽略该字段
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class Student { private String name;
    private int age;
    private String position;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    //省略get,set
    }

3.其他注解

@JsonIgnore 用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。

@JsonIgnoreProperties(ignoreUnknown = true) 将这个注解写在类上之后,就会忽略类中不存在的字段

@JsonIgnoreProperties({ "internalId", "secretKey" }) 将这个注解写在类上之后,指定的字段不会被序列化和反序列化。

`objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE,true);` ***添加这个配置后,输出时自动将类名作为根元素。***

````输出如下:
`{"Student":{"name":"king","age":21,"position":null,"createTime":"2018-05-02 10:06:29"}}`
```` `@JsonRootName("myPojo")` ***将这个注解写在类上之后,根据指定的值生成根元素,作用类似于上面***

(博客园的这个markdown编辑器真不会用)

【json】Jackson的使用的更多相关文章

  1. Json --- Jackson工具

    一.Jackson简介 Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象.Jackson ...

  2. json jackson

    1.引入依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId&g ...

  3. spray json, jackson 转到type时多key和少key的比较

    有组合关系的三个class定义 A { B { C {...} ... } ... } 每个class都有loadFromJson和writeAsJson方法.过去几年,三个class里的成员变量一直 ...

  4. Jackson 框架,轻易转换JSON

    Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...

  5. Jackson 框架,轻易转换JSON【转】

    Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...

  6. jackson json转对象 对象转json

    一,Jackson使用示例 第1步:创建ObjectMapper对象. 创建ObjectMapper对象.它是一个可重复使用的对象. ObjectMapper mapper = new ObjectM ...

  7. Java之JSON操作(Jackson)

    Java to JSON: package json.jackson; import bean.User; import com.fasterxml.jackson.databind.ObjectMa ...

  8. jackson java对象和json对象的互相转换

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

  9. Java Jackson - Json Polymorphism

    from://http://www.studytrails.com/java/json/java-jackson-Serialization-polymorphism.jsp Jackson prov ...

  10. Java解析json(二):jackson

    Java解析json(二):jackson   官方参考 Jackson Home Page:https://github.com/FasterXML/jackson Jackson Wiki:htt ...

随机推荐

  1. python函数中把列表(list)当参数时的"入坑"与"出坑"

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑!! 入坑 def f(x,li=[]): for i in range(x): li.append(i*i ...

  2. useradd或者userdel相关用户管理命令不好用

    前言 有时使用useradd或者userdel会出现如下报错: userdel: cannot open /etc/passwd 很明显是/etc/passwd文件导致的 一.查看以及改变文件状态 [ ...

  3. Android 布局之LinearLayout 子控件weight权重的作用详析

    关于Android开发中的LinearLayout子控件权重android:layout_weigh参数的作用,网上关于其用法有两种截然相反说法: 说法一:值越大,重要性越高,所占用的空间越大: 说法 ...

  4. jquery.dataTables的用法

    写页面前端时,使用表格的插件可以快速漂亮的排版.本例子中使用jquery.dataTables来处理table.直接来点干货 html代码如下 <table cellpadding=" ...

  5. sql 跨表修改的方式

    update xhj_mon_job_log a set person_id = (select id from xhj_mon_job_manage b where a.task_id = b.id ...

  6. laravel的模型和数据库基础操作

    laravel分为三大数据库操作(DB facade[原始查找],查询构造器[Query Builder],Eloquent ORM): use Illuminate\Support\Facades\ ...

  7. haproxy有关session的问题

    在实验的时候遇到一个问题就是当我登录网站的时候,然后我再刷新一下,用户的状态就退出了 我现在的框架是这样的,前面有一台haproxy作为反向代理,后面有两台服务器跑的是java应用.后面两台服务器做的 ...

  8. 关于Linux动态库的加载路径

    问题 按如下步骤在Ubuntu上编译安装Google Protocol Buffers $ ./configure $ make $ make check $ sudo make install 运行 ...

  9. 自己动手写shell命令之write

    Linux下write命令同意用户跟其它终端上的用户对话.用c语言实现shell命令write.代码例如以下: #include <stdio.h> #include <fcntl. ...

  10. 创建Hive/hbase相关联的表异常

    hive> CREATE TABLE hperson(id string, name string,email string) STORED BY 'org.apache.hadoop.hive ...