1

我知道这个问题已经被问过几次了,但即使我使用建议的解决方案,我也无法让它发挥作用。

我需要的是使用作为 json 对象的一部分传入的 LocalDate 。采用以下格式:

 "date":{"year":2016,"month":10,"day":9}

正如建议的那样,我正在使用我自己的 XmlAdapter

import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.time.LocalDate;

public class LocalDateAdapter extends XmlAdapter<String, LocalDate> {
@Override
public LocalDate unmarshal(String s) throws Exception {
    return LocalDate.parse(s);
}
@Override
public String marshal(LocalDate localDate) throws Exception {
    return localDate.toString();
}
}

我在我的模型类中使用注释。

@XmlJavaTypeAdapter(type=LocalDate.class, value = LocalDateAdapter.class)
protected LocalDate date;

@XmlJavaTypeAdapter(type=LocalDate.class, value = LocalDateAdapter.class)
public LocalDate getDate() {
    return date;
}

调试时,调试器命中 unmarshal 方法,但字符串参数为空“”。

我正在使用 jersey-media-moxy,这是我的 pom 的一部分

 <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
 <dependency>
        <groupId>org.glassfish.grizzly</groupId>
        <artifactId>grizzly-http-server</artifactId>
        <version>2.3.28</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-http</artifactId>
    </dependency>

你能告诉我我做错了什么吗?谢谢 :)

4

0 回答 0