一。过滤某个对象的属性转换为json对象.
如.不想将密码返回给客户端,则在对应字段上使用 @JsonIgnore 注解或在对应类上使用@JsonIgnoreProperties注解
p.s.前提.spring mvc版本必须是4.x
public class User {
private String username;
@JsonIgnore
private String password;
@JsonIgnore
private Date createDate;
//...
}
@JsonIgnoreProperties({"password", "createDate"})
public class User {
private String username;
private String password;
private Date createDate;
//...
}
如果,某个场景需要将xx字段序列化为json,某个场景又不需要序列化xx字段到json字符串呢?那么使用如下方式配置
public class User {
public interface WithoutPasswordView {};
public interface WithoutCreateDateView {};
@JsonView(WithoutPasswordView.class)
@JsonView(WithoutCreateDateView.class)
private String username;
@JsonView(WithoutCreateDateView.class)
private String password;
@JsonView(WithoutPasswordView.class)
private Date createDate;
//...
}
@RequestMapping(value = "/user", method = RequestMethod.GET)
@JsonView(User.WithoutPasswordView.class)
public User getUser() {
return new User("eric", "7!jd#h23");
}
二。对返回的json字符串的属性值进行格式化
1.自定义一个格式化的类,实现如何对感兴趣的字段进行格式化
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* 日期类型格式化,格式化为:yyyy-MM-dd 格式
*/
public class DateJsonSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException,
JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
}
2. 在要进行格式化的字段上标注 @JsonSerialize,并指定要使用的格式化类对象
@JsonSerialize(using=DateJsonSerializer.class)
@Column(name="BIRTHDAY")
public Date getBirthday() {
return birthday;
}