我正在尝试让我的服务器解析以下JSON:
{"hardwareId":1,"registerTime":"2017-02-14T03:42:11.482Z","sensorId":1,"temperature":23.6}必须将registerTime属性解析为OffsetDateTime实例:
@XmlRootElement
public class TemperatureRegister {
private int m_hardwareId;
private int m_sensorId;
private OffsetDateTime m_registerTime;
private double m_temperature;
public TemperatureRegister() {
}
public TemperatureRegister(OffsetDateTime p_registerTime, double p_temperature,
int p_hardwareId, int p_sensorId) {
if (p_registerTime == null) {
this.m_registerTime = OffsetDateTime.now(ZoneOffset.UTC);
}
this.m_registerTime = p_registerTime;
this.m_temperature = p_temperature;
this.m_hardwareId = p_hardwareId;
this.m_sensorId = p_sensorId;
}
...
}这就是我的资源方法的定义:
@POST
@Path("/insert")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public TemperatureRegister addOne(TemperatureRegister p_register) {
m_mongoConnector.InsertOne(p_register);
return p_register;
}由于某些原因,在上面的方法中,p_register参数始终是这样的:
TemperatureRegister [m_hardwareId=1, m_sensorId=1, m_registerTime=null, m_temperature=23.6]它正确地映射了除OffsetDateTime以外的所有内容。它总是null的。为什么这是唯一有问题的值?
我做错了什么吗?是否需要特殊配置来处理OffsetDateTime`?
发布于 2017-02-14 16:26:29
如果您使用JSON作为JSON提供程序,则需要支持OffsetDateTime的jackson-datatype-jsr310依赖项
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.8.6</version>
</dependency>当您的类字段名与TemperatureRegister属性名不匹配时,您还希望使用@JsonProperty注释JSON字段:
public class TemperatureRegister {
@JsonProperty("hardwareId")
private int m_hardwareId;
@JsonProperty("sensorId")
private int m_sensorId;
@JsonProperty("registerTime")
private OffsetDateTime m_registerTime;
@JsonProperty("temperature")
private double m_temperature;
// Constructor, getters and setters omitted
}https://stackoverflow.com/questions/42218269
复制相似问题