Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.ws.rs.core.Response.ResponseBuilder生成java.util.Date作为编号_Java_Rest - Fatal编程技术网

javax.ws.rs.core.Response.ResponseBuilder生成java.util.Date作为编号

javax.ws.rs.core.Response.ResponseBuilder生成java.util.Date作为编号,java,rest,Java,Rest,我正在使用JavaEEAPI6.0 我有一个实体bean,其中有一个名为updated的java.util.Date字段 public class Tariff implements Serializable { private Date updated 我还有休息服务 @GET @Path("/example") public Response getTariff() { return Response.status(200).entity(new Records(creat

我正在使用JavaEEAPI6.0

我有一个实体bean,其中有一个名为updated的java.util.Date字段

public class Tariff implements Serializable {
    private Date updated
我还有休息服务

@GET
@Path("/example")
public Response getTariff() {
    return Response.status(200).entity(new Records(createExampleTariff())).build();
}
当我调用REST服务时,它会以数字形式返回日期

{"records":{"description":"OTHER","message":"Nothing to say","status":"OK", "updated":1475822878961},"status":"ok"}

任何人都知道我如何在不使用DTO的情况下解决这个问题。

Date类实际上是一个数字的包装器,该数字是自称为“历元”的标准基准时间(即1970年1月1日00:00 GMT)以来的指定毫秒数。
你需要明确你所说的“过去工作”是什么意思。要么发送一个数字,要么发送一个字符串。对于字符串,您可以使用SimpleDataFormat生成所需的字符串。

我仍然会重复时间戳,使其保持简单。如果确实需要以人类可读的格式发送日期,可以创建一个扩展org.codehaus.jackson.map.JsonSerializer的类,并根据需要实现serialize方法。然后像这样描述约会对象

@JsonSerialize(using=JsonDateSerializer.class)
public Date getDate() {
   return date;
}

查看更多信息原因:

日期始终存储为自1970年1月1日00:00:00 GMT以来的毫秒数,由该日期对象表示。

解决方案:

您可以使用
org.codehaus.jackson.map.JsonSerializer
转换日期格式。通过使用该转换逻辑编写类JsonDateSerializer

@JsonSerialize(using=JsonDateSerializer.class)
public Date getDate() {
   return date;
}

您可以获得详细解释

日期始终存储为自1970年1月1日00:00:00 GMT以来的毫秒数,由此日期对象表示。您好,jp,您真的需要以人类可读的形式返回日期吗?长日期更容易处理。现在阅读效果很好,但当我尝试发布和更新时,它告诉我:无法从字符串值“2016-10-07 09:16:51”构造java.util.Date的实例:不是有效的表示形式(错误:无法解析日期“2016-10-07 09:16:51”:与任何标准格式(“yyyy-MM-dd'T'HH:MM:ss.SSSZ”)不兼容,“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'”,“EEE,dd-MMM-yyyy-HH:MM:ss-zzz”,“yyyy-MM-dd”))在转换过程中,您可以编写逻辑以创建任何要求格式的日期。例如,“yyyy-MM-dd'T'HH:MM:ss.SSSZ”,“yyyyyy-MM-dd'T'HH:MM:ss.SSS'Z'”,“EEE,dd-MMM-yyyyyyyyyyyyyyy-HH:ss-zzz”,“yyyyyy-dd”在JSondater中代替“MM-yyy“dateformat使用任何指定的格式我切换到所要求的格式之一,现在一切正常