【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 ... 
随机推荐
- iOS10 完美降级 iOS9.3.2,保留全部数据
			本篇文章由:http://xinpure.com/downgrade-ios10-perfect-ios9-3-2-retention-of-all-data/ iOS 10 Beta版尝鲜 前段时间 ... 
- 微信小游戏“跳一跳”,Python“外挂”已上线
			微信又一次不声不响地搞了个大事情: “小游戏”上线了! 于是,在这辞旧迎新的时刻,毫无意外的又火了. 今天有多少人刷了,让我看到你们的双手! 喏,我已经尽力了…… 不过没关系,你们跳的再好,在毫无心理 ... 
- Microsoft Excel不能访问文件
			Microsoft Excel 不能访问文件"C:\Users\james\Documents\test.xls". 可能的原因有以下几个: • 文件名称或路径不存在. • 文件正 ... 
- 内存管理算法--Buddy伙伴算法【转】
			转自:http://blog.csdn.net/orange_os/article/details/7392986 Buddy算法的优缺点: 1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是 ... 
- Linux内核(16) - 高效学习Linux内核
			世界悲结束了,章鱼哥也退役了,连非诚勿扰中的拜金女也突然的少了很多.这本<Linux内核修炼之道>在卓越.当当.china-pub上也已经开卖了,虽然是严肃文学,但为了保证流畅性,大部分文 ... 
- nodejs request gb2312乱码的问题
			http://www.cnblogs.com/linka/p/6658055.html https://cnodejs.org/topic/53142ef833dbcb076d007230 // np ... 
- Python  爬虫   数据提取
			一下子运行 七八十个 select 将会是什么样的体验呢? 业务部门提供了一个需要,要求从爬虫数据中提取出88家的数据, 并且也提供了一个excel表格,如下图: 这个时候我们可以通过拍卖行,拍卖时 ... 
- IP和java.net.InetAddress类的使用
			一.IP 1.地址格式 互联网上每一台计算机都有一个唯一标示自己的标记,这个标记就是IP地址.IP 地址使用32 位长度二进制数据标示,一般在实际中看到的大部分IP地址都是以十进制的数据形式标示的,如 ... 
- vim:关于映射和跳出括号
			先说如何自动补全. 命令:vim .vimrc inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {}<ESC> ... 
- Latex中文utf-8编码的三种方式
			我们知道Latex一般用CJK和CTEX宏包支持中文编辑,CJK和CTEX的默认编码是GBK,而windows下的默然编码就是GBK,因此CJK和CTEX不需要特殊配置就可以直接支持中文Latex编译 ... 
