从REST服务传递到Spring应用程序时的对象失真

时间:2017-09-30 18:21:33

标签: spring rest

我有一个奇怪的问题,我希望你能帮助我解决它。 我尝试传递对象列表,其中每个对象包含从测试服务到我的控制器的LocalDate参数(JodaTime库)。

这是我服务的方法。它返回对象列表。查看循环中打印的日期。

@RequestMapping("/getListaRecept")
@ResponseBody
public ListaRecept sendAnswer(){
    ListaRecept listaReceptFiltered = prescriptionCreator.createListaRecept();

    for(Recepta r : listaReceptFiltered.getListaRecept()){
        System.out.println(r.toString());
    }
    return listaReceptFiltered;
}

日期正确

Recepta{id=3, nazwa='nurofen', status=NOT_REALIZED, date=2017-07-27}
Recepta{id=1, nazwa='ibuprom', status=ANNULED, date=2014-12-25}
Recepta{id=2, nazwa='apap', status=REALIZED, date=2016-08-18}

现在我正在使用restTemplate从我的SpringBoot应用程序调用此方法。然后打印出收到的列表

private final RestTemplate restTemplate;

public SgrService2(RestTemplateBuilder restTemplateBuilder) {
    this.restTemplate = restTemplateBuilder.build();
    this.restTemplate.getMessageConverters()
            .add(0, new StringHttpMessageConverter(Charset.forName("UTF-16")));
}

public ListaRecept getList() {
    for(Recepta r : this.restTemplate.getForObject("http://localhost:8090/getListaRecept", 
            ListaRecept.class).getListaRecept()){
        System.out.println(r.toString());
    }
    return this.restTemplate.getForObject("http://localhost:8090/getListaRecept", 
            ListaRecept.class);
}

如您所见,所有日期都替换为当前日期:/

Recepta{id=3, nazwa='nurofen', status=NOT_REALIZED, date=2017-09-30}
Recepta{id=1, nazwa='ibuprom', status=ANNULED, date=2017-09-30}
Recepta{id=2, nazwa='apap', status=REALIZED, date=2017-09-30}

我不知道发生了什么...... 在这里你有pom依赖

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.9.9</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.1</version>
    </dependency>

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在我看来,您使用的是错误的jackson模块,而不是jsr310(我猜是Java 8日期类型),尝试使用工件jackson-datatype-joda并注册模块JodaModule