使用XmlJavaTypeAdapter(JAXB)编组LocalDate将返回null

时间:2016-10-10 07:07:11

标签: java jaxb jersey unmarshalling localdate

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

我需要的是使用作为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方法但字符串参数为空&#34;&#34;。

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

 <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>
你愿意告诉我我做错了什么吗?谢谢:))

0 个答案:

没有答案