4

当我的球衣应用程序中的方法返回 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。

4

1 回答 1

5

注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB (JSR-222)专家组的成员。

MOXyJsonProvider当前不支持根级别Map。我刚刚签入了对 EclipseLink 2.5.2 和 2.6.0 流的修复,这样isReadable/isWriteable将为这些类型返回 false,这样 MOXy 就不会被选为这个用例的 JSON 绑定提供程序。从2013 年 10 月 11 日开始,您可以从以下链接下载每晚构建:

我还输入了以下增强请求以添加一流的支持Map

于 2013-10-10T17:33:03.603 回答