【json】Jackson的使用
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"}
其他的一些奇怪的配置
- 输出格式化,就是分行显示,该功能慎用:
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
打印输出样式
{
"name" : "king",
"age" : 21,
"position" : null,
"createTime" : "2018-04-27 17:29:01"
}
- 异常忽略
字符串转对象时,如果字符串中字段在对象中不存在,则忽略该字段@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的使用的更多相关文章
- Json --- Jackson工具
一.Jackson简介 Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象.Jackson ...
- json jackson
1.引入依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId&g ...
- spray json, jackson 转到type时多key和少key的比较
有组合关系的三个class定义 A { B { C {...} ... } ... } 每个class都有loadFromJson和writeAsJson方法.过去几年,三个class里的成员变量一直 ...
- Jackson 框架,轻易转换JSON
Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...
- Jackson 框架,轻易转换JSON【转】
Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...
- jackson json转对象 对象转json
一,Jackson使用示例 第1步:创建ObjectMapper对象. 创建ObjectMapper对象.它是一个可重复使用的对象. ObjectMapper mapper = new ObjectM ...
- Java之JSON操作(Jackson)
Java to JSON: package json.jackson; import bean.User; import com.fasterxml.jackson.databind.ObjectMa ...
- jackson java对象和json对象的互相转换
概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...
- Java Jackson - Json Polymorphism
from://http://www.studytrails.com/java/json/java-jackson-Serialization-polymorphism.jsp Jackson prov ...
- Java解析json(二):jackson
Java解析json(二):jackson 官方参考 Jackson Home Page:https://github.com/FasterXML/jackson Jackson Wiki:htt ...
随机推荐
- HDUOJ----Good Numbers
Good Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- 一、springMVC、freemarker页面半自动静态化
说明:刚刚接到公司的通知,实现(半自动化),即通过参数控制是否需要静态化页面(哪里我说错了,勿喷!谢谢) 1,请求.do的URL时直接生成对应的.htm文件,并将请求转发到该htm文件 2,自由控制某 ...
- duplicate files during packaging of apk
OSChina Android APP 导入到Android Studio中不能运行,发现一小插曲. 主要实现了开源中国社区 OSC Android 客户端项目源码通过Gradle方式编译 在 And ...
- IIS6.0中布署MVC站点
http://www.cnblogs.com/anny-1980/articles/2616657.html
- MySQL Study之--MySQL下图形工具的使用(MySQL Administrator)
MySQL Study之--MySQL下图形工具的使用(MySQL Administrator) 系统环境: 操作系统: Windows 7(64) 下载地址:http://www.soft ...
- 分享一个不错的squid 配置文件
squid配置文件一例,只使用了web cache功能,用来给web加速. http_port 80 defaultsite=IPicp_port 0cache_peer ip parent 85 0 ...
- CentOS配置SSH远程连接
本文为大家介绍Centos中配置SSH远程连接的方法,只是简单配置,供初学者参考. 1.配置IP#setup 选择 NetWork configuration 选择 Device configurat ...
- 使用base64:url 来定义背景图片url
普通的背景图片css是这样的: background-image:url(http://www.zhangxinxu.com/wordpress/wp-content/themes/default/i ...
- mysql:索引原理与慢查询优化
一 索引的原理 1. 索引原理 索引的目的在于提高查询效率,与我们查阅图书所用的目录是一个道理:先定位到章,然后定位到该章下的一个小节,然后找到页数.相似的例子还有:查字典,查火车车次,飞机航班等 本 ...
- vue实现复制粘贴的两种形式
方式一: 1.安装clipboard:npm install clipboard 2.src/utils/clipboard.js import Vue from 'vue' import Clipb ...