【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 ...
 
随机推荐
- JFinal常见问题和知识点笔记
			
1.当主键Id命名不是“id”时,应该显式地将自定义的id指出来 例如: Db.deleteById("post_user","user_id", 5); 2. ...
 - python练习笔记——利用信号signal处理僵尸进程
			
1 signal处理僵尸进程的基于语法 利用信号signal处理僵尸进程的方法:signal(SIGCHLD,SIG_IGN),该方法也是第三种处理僵尸进程的方法. SIGCHLD:子进程状态改变后产 ...
 - 消息队列实现回射客户/服务器和 msgsnd、msgrcv 函数
			
一.msgsnd 和 msgrcv 函数 #include <sys/types.h> #include <sys/ipc.h> #include <sys/ms ...
 - Linux内核中锁机制之信号量、读写信号量
			
在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程 ...
 - HLJU 1046: 钓鱼(数据增强版)  (贪心+优化)
			
1046: 钓鱼(数据增强版) Time Limit: 1 Sec Memory Limit: 128 MB Submit: 11 Solved: 3 [id=1046">Subm ...
 - UIActivityIndicatorView的详细使用
			
转自:http://www.cnblogs.com/top5/archive/2012/05/17/2506623.html UIActivityIndicatorView实例提供轻型视图,这些视图显 ...
 - Cocos2d-x 3.0final 终结者系列教程03-源代码文件夹说明
			
话说今天从霍营到回龙观,走到天鑫家园东路.我肋哥去,堵死我啦.7:30出门,9:10还没到回龙观. 北京这交通真是坑爹.回过头想想.怪自己走小路,有时候确实快.可有时候真堵. 堵了35分钟后果断掉头, ...
 - CF  366E - Dima and Magic Guitar 最远曼哈顿距离
			
题目:http://codeforces.com/problemset/problem/366/E 事实上就是找 n * m 矩阵中数字 x 和 数字 y 的最远距离. 方法參照武森的论文<浅谈 ...
 - 改变mysql数据库用户的权限
			
mysql> grant all on *.* to test@'%';Query OK, 0 rows affected (0.00 sec) mysql> flush privileg ...
 - 收集Cocos2d提供的字体!共57种
			
很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利用一些时间整理了57种字体样式,这些我想足够你用了: 不多说下面一起来看看吧:(每张图对应11种 ...