首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在泽西岛消费OffsetDateTime

在泽西岛消费OffsetDateTime
EN

Stack Overflow用户
提问于 2017-02-14 13:05:35
回答 1查看 680关注 0票数 1

我正在尝试让我的服务器解析以下JSON:

代码语言:javascript
复制
{"hardwareId":1,"registerTime":"2017-02-14T03:42:11.482Z","sensorId":1,"temperature":23.6}

必须将registerTime属性解析为OffsetDateTime实例:

代码语言:javascript
复制
@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;
    }

    ...
 }

这就是我的资源方法的定义:

代码语言:javascript
复制
@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参数始终是这样的:

代码语言:javascript
复制
TemperatureRegister [m_hardwareId=1, m_sensorId=1, m_registerTime=null, m_temperature=23.6]

它正确地映射了除OffsetDateTime以外的所有内容。它总是null的。为什么这是唯一有问题的值?

我做错了什么吗?是否需要特殊配置来处理OffsetDateTime`?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 16:26:29

如果您使用JSON作为JSON提供程序,则需要支持OffsetDateTimejackson-datatype-jsr310依赖项

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.8.6</version>
</dependency>

当您的类字段名与TemperatureRegister属性名不匹配时,您还希望使用@JsonProperty注释JSON字段:

代码语言:javascript
复制
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
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42218269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档