gpt4 book ai didi

java - Jaxb - 列表元素的映射属性

转载 作者:太空宇宙 更新时间:2023-11-04 06:45:54 25 4
gpt4 key购买 nike

嘿,我的 xml 看起来像这样:

<forecast>
<time day="2014-06-02">
<symbol></symbol>
</time>
<time day="2014-06-03">
<symbol></symbol>
</time>
</forecast>

我需要每个“时间”对象的 map 日属性,但看起来它没有按我的预期工作。

这是我的类(class)(java):

public class Forecast {
@XmlElement
public List<WeatherEvent> time;
}

public class WeatherEvent {
@XmlAttribute(name = "day")
@XmlJavaTypeAdapter(DateAdapter.class)
public Date day;
@XmlElement
public Symbol symbol;
}

public class DateAdapter extends XmlAdapter<String, Date> {

private final SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss");

@Override
public String marshal(Date v) throws Exception {
return dateFormat.format(v);
}

@Override
public Date unmarshal(String v) throws Exception {
Date date = dateFormat.parse(v);
if (date == null) {
SimpleDateFormat simplierFormat = new SimpleDateFormat("yyyy-MM-dd");
date = simplierFormat.parse(v);
}
return date;
}
}

如何正确映射“day”属性以使其不为空?

最佳答案

当日期如下所示时,以下行将抛出 ParseException 并退出该方法,并且永远不会到达下面的逻辑:2014-06-02

Date date = dateFormat.parse(v);

您需要捕获异常并忽略它,然后对其应用第二个格式化程序。

Date date = null;
try {
Date date = dateFormat.parse(v);
} catch(ParseException e) {
SimpleDateFormat simplierFormat = new SimpleDateFormat("yyyy-MM-dd");
date = simplierFormat.parse(v);
}
return date;

关于java - Jaxb - 列表元素的映射属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999698/

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