gpt4 book ai didi

java - 将 LocalDateTime 与 JAXB 结合使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:16 25 4
gpt4 key购买 nike

我正在尝试将 JAXB 与 LocalDateTime 类型的字段一起使用。我写了一个适配器来处理转换:

public class LocalDateTimeXmlAdapter extends XmlAdapter<String, LocalDateTime> {
@Override
public String marshal(LocalDateTime arg0) throws Exception {
return arg0.toString();
}

@Override
public LocalDateTime unmarshal(String arg) throws Exception {
return LocalDateTime.parse(arg);
}
}

我在 package-info.java 中注册了适配器,如下所示:

@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(type=LocalDateTime.class, value=LocalDateTimeXmlAdapter.class)
})
package xml;

import java.time.LocalDateTime;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;

根据 this page 这似乎已经足够了.但是,我不断收到以下错误:

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.time.LocalDateTime does not have a no-arg default constructor.

我明白抛出异常的原因,但我很难将默认构造函数添加到java.time.LocalDateTime。这似乎是类(class)的一个缺点/一个奇怪的设计决定。有任何解决方法吗?

最佳答案

您所拥有的应该有效。以下其中一项可能是错误的:

  1. 由于您已在包级别指定了 @XmlJavaTypeAdapter,因此它将仅应用于名为 xml 的包中类的属性。您的模型中是否有来自不同包的类具有 LocalDateTime 类型的映射属性?
  2. 也有可能您的package-info.java 文件没有被编译。

关于java - 将 LocalDateTime 与 JAXB 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28189488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com