我是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 。
This答案显示了如何使用JsonSerializer
格式化日期。如果我扩展JsonSerializer
,那么我将该子类放在项目中的哪个位置?
答案 0 :(得分:0)
我自己想出了一个解决方案:
在新的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);
}
}