JSON 的使用。

有些情况下,将一个对象转换成为JSON字符串的时候,我们可能不需要该对象的某些属性转换成对象,那么可以使用下面的方式。

先定义 Pojo对象

package com.zf.vo;
import java.sql.Timestamp;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zf.control.JsonDateFormate;
import com.zf.control.JsonTimestampFormater;

public class Person {
  
	private String name ; 
	
	//忽略该字段
	@JsonIgnore			
	private int age ;      
	
	//转换为指定格式的字符串  yyyy-MM-dd hh:mm:ss
	@JsonSerialize(using = JsonTimestampFormater.class)
	private Timestamp birthday ;
	
	//转换为指定日期格式字符串 yyyy-MM-dd 
	@JsonSerialize(using = JsonDateFormate.class)
	private Date updateTime ;
	
	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 Timestamp getBirthday() {
		return birthday;
	}
	      
	public void setBirthday(Timestamp birthday) {
		this.birthday = birthday;
	}
	public Date getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	
}

然后,定义类型转换器

package com.zf.control;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class JsonTimestampFormater extends JsonSerializer<Timestamp> {
	private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	@Override
	public void serialize(Timestamp value, JsonGenerator jgen,
			SerializerProvider sp) throws IOException,
			JsonProcessingException {
		jgen.writeString(sdf.format(value));
	}

}


package com.zf.control;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class JsonDateFormate extends JsonSerializer<Date> {
	private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	@Override
	public void serialize(Date value, JsonGenerator jgen, SerializerProvider sp)
			throws IOException, JsonProcessingException {
		jgen.writeString(sdf.format(value));
	}
}

再进行测试:

public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException, InterruptedException {
		Person person = new Person();
		person.setAge(19);
		person.setName("xxxxx");     
		person.setBirthday(new Timestamp(System.currentTimeMillis()));
		ObjectMapper mapper = new ObjectMapper();      
		String jsonstr = mapper.writeValueAsString(person);
		System.out.println(jsonstr); }

输出结果:

{"name":"xxxxx","birthday":"2012-08-21 03:27:07","updateTime":"2012-08-21"}



你可能感兴趣的:(Date,json,String,测试,Class)