我正在运行一个示例(我再也找不到了)布莱斯·道恩斯博客 http://blog.bdoughan.com在 Glassfish 3 上使用 EclipseLink 2.5 MOXy for JAXB 服务。
@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
works.
但我希望关键元素被命名employees
,所以我必须使用包装器注释,还是不?
Edit:
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;
}
}
我已确认您所看到的问题并已打开以下错误:
- http://bugs.eclipse.org/411001 http://bugs.eclipse.org/411001
UPDATE
此问题的修复已签入 EclipseLink 2.5.1 和 2.6.0 流中。从 2013 年 6 月 19 日开始,您可以通过以下链接在相应的夜间版本中获取修复:
- http://www.eclipse.org/eclipselink/downloads/nightly.php http://www.eclipse.org/eclipselink/downloads/nightly.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)