[英]JAX-RS @Produces: how to customize JSON?
我是JAX-RS的新手,我想将项目列表作为JSON服务。 我的实体模型是这样的:
public class Entity {
private String name;
private Date date;
private Float number;
}
这是我调用服务的方式:
@Path("/entities")
public class EntitiesController {
@GET
@Produces({"application/json"})
public List<Entity> getEntities() {
return EntityDAO.entitiesList();
}
}
但是,日期未格式化,但显示为long 。
此答案显示了如何使用JsonSerializer
格式化日期。 如果我扩展JsonSerializer
,那么该子类应该放在我的项目中哪里?
我自己想出了一个解决方案:
在一个新的serializers
程序包下,我创建了CustomJsonDateSerializer
类,由于@JsonSerialize(...)
批注,该类将被委派格式化date
属性的责任。
因此,我修改了Entity
类,在字段顶部添加了该注释:
@JsonSerialize(using = CustomJsonDateSerializer.class)
private Date date;
这是CustomJsonDateSerializer
的内容:
package serializers;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class CustomJsonDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException {
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyy");
String format = formatter.format(value);
jgen.writeString(format);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.