您的位置:首页 > 编程语言 > Java开发

关于spring mvc返回json数据

2015-11-15 22:17 387 查看
一。过滤某个对象的属性转换为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: