我正在使用EclipseLink 2.5 MOXy for JAXB服务从Glassfish 3上的Blaise Doughans blog运行一个样本(我找不到了)。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Company {
@XmlElementWrapper(name="employees")
@XmlElement(name = "employee", type=Employee.class)
private List<Employee> employees;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {
private String id;
private String name;
}
我在类中添加了一些注释,以生成所需的json结构:
{
"employees": [
{
"id": "1",
"name": "Jane Doe",
"report": []
}
]
}
当我尝试解组这个JSON时,它遗憾地失败了,返回一个空员工列表的对象
将另一个元素添加到JSON列表或删除@XmlElementWrapper
工作
但我希望关键元素被命名为employees
,所以我必须使用包装器注释?
编辑:
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>(2);
set.add(MOXyJsonProvider.class);
set.add(Index.class);
return set;
}
@Override
public Set<Object> getSingletons() {
MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider();
moxyJsonProvider.setAttributePrefix("@");
moxyJsonProvider.setFormattedOutput(true);
moxyJsonProvider.setIncludeRoot(false);
moxyJsonProvider.setMarshalEmptyCollections(true);
moxyJsonProvider.setValueWrapper("$");
moxyJsonProvider.setWrapperAsArrayName(true);
HashSet<Object> set = new HashSet<Object>(1);
set.add(moxyJsonProvider);
return set;
}
}
答案 0 :(得分:4)
我已确认您正在查看的问题并已打开以下错误:
<强>更新强>
已将此问题的修复程序检入EclipseLink 2.5.1和2.6.0流。您可以从2013年6月19日开始的以下链接获取相应夜间版本中的修复: