有些情况下,将一个对象转换成为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"}