我尝试获取一个包含zoneDateTime字母的字符串。
ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
String date = "2019-06-12T22:00:00-04:00";
OffsetDateTime odt = objectMapper.readValue(date, OffsetDateTime.class);
System.out.println(odt);杰克逊说: parserException:意想不到的角色-
此命令有效
OffsetDateTime.parse("2019-06-12T22:00:00-04:00"); 所以看起来像是杰克逊的问题
发布于 2020-07-23 22:42:56
objectMapper.readValue(date, OffsetDateTime.class)期望字符串date是有效的JSON。
因此,使用这种方法的一种方法是从下面这样的示例开始:
String json = "{ \"odt\" : \"2019-06-12T22:00:00-04:00\" }";然后创建一个对象来存储此JSON,例如:
import java.time.OffsetDateTime;
public class ODT {
private OffsetDateTime odt;
public OffsetDateTime getOdt() {
return odt;
}
public void setOdt(OffsetDateTime odt) {
this.odt = odt;
}
}现在,下面的代码将使用对象映射器成功处理输入:
ODT myOdt = objectMapper.readValue(json, ODT.class);
System.out.println(myOdt.getOdt());这将打印:
2019-06-13T02:00Z更新
要使用原始偏移而不是UTC显示此值,可以使用以下命令:
System.out.println(myOdt.getOdt().atZoneSameInstant(ZoneId.of("-04:00")));这将打印:
2019-06-12T22:00-04:00这与我们的起始JSON字符串中的原始值相同。
https://stackoverflow.com/questions/63053211
复制相似问题