我使用JAX-RS方法注释创建了一个RESTful web服务:
@GET
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public MyThing test()
{
MyThing myObject = new MyThing(LocalDateTime.now());
return myObject;
}
{"myDateTimeProperty":{"hour":14,"minute":32,"second":39,"year":2014,"month":"NOVEMBER","dayOfMonth":6,"dayOfWeek":"THURSDAY","dayOfYear":310,"monthValue":11,"nano":0,"chronology":{"calendarType":"iso8601","id":"ISO"}},...}
{"myDateTimeProperty":"2014-11-07T15:06:36.545Z",...}
我以前从未使用过localdatetime
,所以我决定做一些测试。以下是我的发现:
>
Jersy 2.13和此提供程序(在没有额外配置的情况下完成该框)
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>${jersey.version}</version>
</dependency>
使用此提供程序的Jersey 2.13(支持JAXB Annotation-Dependency on jackson-module-jaxb-annotations),具有自定义适配器
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
@Override
public LocalDateTime unmarshal(String s) throws Exception {
return LocalDateTime.parse(s);
}
@Override
public String marshal(LocalDateTime dateTime) throws Exception {
return dateTime.toString();
}
}
// Getter for model class
@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
public LocalDateTime getDateTime() {
return dateTime;
}
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.4.0</version>
</dependency>
我们需要确保注册JacksonJaxBJSONProvider
所以我想,任何使用Jackson的提供程序,如果没有一些自定义配置,不管是通过适配器(如上所示)还是其他一些自定义配置,都不会给出deisred结果。jersey-media-moxy
提供程序不使用Jackson。
以上信息大部分是不正确的。
>
默认情况下MOXY不工作。它通过简单地调用toString()
来进行序列化,这可能是您想要的,也可能不是您想要的,并且在反序列化时它不会起作用。如果您正在使用MOXy,在它支持Java8之前,您将需要使用XMLAdapter
Jackson您将需要配置它的Java8时间支持。泽西和雷斯特西都是如此。
问题内容: 我使用JAX-RS方法注释创建了RESTful Web服务: 这很好用,但是我想调整一件事:如果返回的Java对象包含新Java 8 LocalDateTime类型的属性,则将其表示为JSON对象: 我如何告诉JAX-RS返回JavaScript Date.toJSON()样式的字符串,例如 代替? 问题答案: 注意:请参见下面的更新 我以前从未使用过,所以我决定进行一些测试。这是我的
我刚到爪哇。Postgres db包含日期的格式为。我需要转换为。 我已经试过了,但是显示的结果是错误的
问题内容: 我想要这种格式 问题答案: 您需要先 解析 日期字符串(使用方法),才能 使用与格式匹配的格式获取对象。 然后使用所需的格式来 格式化 Date对象(Use 方法)以获取字符串。 输出:- 第一种格式是RFC 822 TimeZone与您的日期字符串匹配。有关在日期格式中使用的其他各种选项,请参见。
问题内容: 我陷入了一个问题,将不胜感激。我已经阅读了很多讨论,但它们似乎对我没有用。 如何将其转换为日期对象?我要这样做的原因是因为我想在google图表指令中使用它,其中列之一必须是日期。我不想将列类型设置为字符串: 例如: 问题答案: 这是我在控制器上所做的 我最终将日期格式化为所需的指令格式,如下所示。 这使我在图表的x轴上以dd / MM / yyyy(26/04/2002)的格式输入日
因此,我正在研究如何用javascript中的字符串进行日期比较,我发现大量堆栈溢出的帖子说你不能这样做。 参考: 如何在JavaScript中比较两个字符串日期? 用JavaScript比较两个日期 然而,下面的代码本与您所期望的完全一样,只使用字符串,当其中一个是YYYY-MM-DD而另一个是yyyy/mm/dd时,它甚至可以工作。有谁能解释一下为什么这样做,为什么stack overflow
问题内容: 在我的程序中,我试图将日期转换为指定格式的字符串,然后再转换为日期。我需要日期为dd-MMM- yy格式。因此,我正在使用SimpleDateFormat将日期转换为dd-MMM-yy格式, 结果是我预期的,即12年5月23日,但是当我使用parse()将字符串转换回日期时,它将更改为IST 2012年5月23日星期三13:16:14。 有什么方法可以将字符串转换回日期而不更改格式?我