我是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();
}
}
但是,日期未格式化但显示为长。
This答案显示如何使用
JsonSerializer
格式化日期。如果扩展JsonSerializer
,那么该子类应放在我的项目中的什么位置? 最佳答案
我自己想出了一个解决方案:
在一个新的serializers
包下,我创建了CustomJsonDateSerializer
类,由于使用了date
批注,该类将被委派格式化@JsonSerialize(...)
属性的职责。
因此,我修改了我的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);
}
}