当我的 Jersey 应用程序中的方法返回 HashMap 时,我收到以下异常
[Exception [EclipseLink-25003] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: An error occurred marshalling the object
Internal Exception: Exception [EclipseLink-25007] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A descriptor for class java.util.HashMap was not found in the project. For JAXB, if the JAXBContext was bootstrapped using TypeMappingInfo[] you must call a marshal method that accepts TypeMappingInfo as an input parameter.]
有问题的方法是:
@PUT
@Path("/subscriptions/{id}")
@Produces("application/json")
public Map<String, String> updateSubscription(@PathParam("id") int id) {
Map<String, String> response = new HashMap<String, String>();
response.put("status", "ok");
return response;
}
Moxy 与我的应用程序中的 POJO 配合良好。所以,我猜它足够聪明来处理 HashMap。
最佳答案
注意: 我是 EclipseLink JAXB (MOXy) 的负责人,也是 JAXB (JSR-222) 专家组的成员。MOXyJsonProvider
当前不支持根级别 Map
。我刚刚检查了 EclipseLink 2.5.2 和 2.6.0 流的修复程序,以便 isReadable
/isWriteable
将为这些类型返回 false,这样 MOXy 就不会被选为此用例的 JSON 绑定(bind)提供程序。从 2013 年 10 月 11 日 开始,您可以从以下链接下载每晚构建:
我还输入了以下增强请求,以添加对
Map
的一流支持:关于jakarta-ee - 如何制作 Eclipselink 的 moxy marshal HashMap<String, String>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19293044/