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 に答える