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

从REST服务传递到Spring应用程序时的对象变形,spring,rest,Spring,Rest,我有个奇怪的问题,希望你能帮我解决。 我尝试将对象列表从测试服务传递给我的控制器,其中每个对象都包含LocalDate参数(JodaTime库) 这是我的服务提供的方法。它返回对象列表。查看循环中打印的日期。 @RequestMapping("/getListaRecept") @ResponseBody public ListaRecept sendAnswer(){ ListaRecept listaReceptFiltered = prescriptionCreator.creat

我有个奇怪的问题,希望你能帮我解决。 我尝试将对象列表从测试服务传递给我的控制器,其中每个对象都包含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}
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);
}
现在我正在使用restTemplate从我的SpringBoot应用程序调用此方法。然后将收到的列表打印出来

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}
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>

乔达时间
乔达时间
2.9.9
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
2.9.0
com.fasterxml.jackson.core
杰克逊核心
2.9.1

提前感谢您的帮助

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

在我看来,您使用了错误的jackson模块,尝试使用工件
jackson数据类型joda
并注册模块
JodaModule

.getListaRecept()
,而不是jsr310(我猜它适用于Java8日期类型)?这似乎是罪魁祸首?这只是一个骗局。我有一个ListaRecept类,它只包含一个文件名为“ListaRecept”
。getListaRecept()
的ArrayList,该方法在做什么?这似乎是罪魁祸首?这只是一个骗局。我有一个ListaRecept类,它只包含一个文件名为“ListaRecept”的ArrayList