Date 泽西马歇尔地图<;日期、列表>;

Date 泽西马歇尔地图<;日期、列表>;,date,map,jaxb,jersey,Date,Map,Jaxb,Jersey,我开始了解jersey如何与JAXB一起工作。但今天我遇到了一个特殊的情况,我想整理一张(日期、列表)条目的地图: @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) 公共类MyClass{ @XmlJavaTypeAdapter(MapAdapter.class) private Map=new TreeMap(new DateCompareDesc()); } 这里的目标是整理一个以日期为条目的地图及其相应的MyObject列表。地图

我开始了解jersey如何与JAXB一起工作。但今天我遇到了一个特殊的情况,我想整理一张(日期、列表)条目的地图:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
公共类MyClass{
@XmlJavaTypeAdapter(MapAdapter.class)
private Map=new TreeMap(new DateCompareDesc());
}
这里的目标是整理一个以日期为条目的地图及其相应的MyObject列表。地图按描述顺序排序

为此,我为Map实现了一个适配器(MapAdapter,遵循@Blaise Doughan的教程,)。问题出在日期键上。我有一个错误:无法marshall java.util.Date。所以我尝试了这个新的日期适配器:

public class DateAdapter extends XmlAdapter<String, Date> {

@Override
public Date unmarshal(String v) throws Exception {
   //not implemented
}

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

}
公共类DateAdapter扩展了XmlAdapter{
@凌驾
公共日期解组(字符串v)引发异常{
//未实施
}
@凌驾
公共字符串封送处理程序(日期v)引发异常{
return v.toString();
}
}
我在哪里可以添加@XmlJavaTypeAdapter(DateAdapter.class),以便Jersey可以将marhsall Date作为我的树状图的键


谢谢。

JAXB支持将
java.util.Date
编组/解编为标准XML模式类型:日期、时间、日期时间。您可以控制与
@XmlSchemaType
注释一起使用的类型

如果您的日期信息未表示为标准XML模式类型之一,则可以使用类似于我在以下类似问题的答案中使用的
XmlAdapter

如果需要使用
XmlAdapter
方法,则
@XmlJavaTypeAdapter
注释将放置在表示
映射中条目的自适应对象的
日期
字段中。以下是根据我的博客得出的结果:

import javax.xml.bind.annotation.XmlValue;
导入javax.xml.bind.annotation.XmlAttribute;
导入javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
公共类MyMapEntryType{
@XmlAttribute
@XmlJavaTypeAdapter(DateAdapter.class)
公开日期密钥;
公共列表值;
}

JAXB支持将
java.util.Date
编组/反编组为标准XML模式类型:日期、时间、日期时间。您可以控制与
@XmlSchemaType
注释一起使用的类型

如果您的日期信息未表示为标准XML模式类型之一,则可以使用类似于我在以下类似问题的答案中使用的
XmlAdapter

如果需要使用
XmlAdapter
方法,则
@XmlJavaTypeAdapter
注释将放置在表示
映射中条目的自适应对象的
日期
字段中。以下是根据我的博客得出的结果:

import javax.xml.bind.annotation.XmlValue;
导入javax.xml.bind.annotation.XmlAttribute;
导入javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
公共类MyMapEntryType{
@XmlAttribute
@XmlJavaTypeAdapter(DateAdapter.class)
公开日期密钥;
公共列表值;
}

嗨,布莱斯,谢谢你的回复。就我而言,我有一张地图。Date和List不是来自另一个类,我可以在这个类上添加适当的注释。那么,是否无法对地图进行注释以适应日期和列表?@Lahniep-您使用的是地图的默认表示形式?你的日期信息是如何格式化的?是的。。它是一个树状图,日期是用SimpleDataFormat(“yyyy-MM-dd-HH:MM:ss”)格式化的。如果所有日期对象的格式都是这样的,则可以在包级别注册XmlAdapter。下面是一个示例:我正在使用Eclipse,在添加以下内容时出现错误“包注释必须在文件Package info.java中:@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(type=Date.class,value=DateAdapter.class)}),在我的java文件的包声明之前??嗨,布莱斯,谢谢你的回复。就我而言,我有一张地图。Date和List不是来自另一个类,我可以在这个类上添加适当的注释。那么,是否无法对地图进行注释以适应日期和列表?@Lahniep-您使用的是地图的默认表示形式?你的日期信息是如何格式化的?是的。。它是一个树状图,日期是用SimpleDataFormat(“yyyy-MM-dd-HH:MM:ss”)格式化的。如果所有日期对象的格式都是这样的,则可以在包级别注册XmlAdapter。下面是一个示例:我正在使用Eclipse,在添加以下内容时出现错误“包注释必须在文件Package info.java中:@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(type=Date.class,value=DateAdapter.class)}),在我的java文件的包声明之前??
public class DateAdapter extends XmlAdapter<String, Date> {

@Override
public Date unmarshal(String v) throws Exception {
   //not implemented
}

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

}
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

public class MyMapEntryType {

   @XmlAttribute
   @XmlJavaTypeAdapter(DateAdapter.class)
   public Date key;

   public List<MyObject> value;

}