繁体   English   中英

JAX-RS @Produces:如何自定义JSON?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM