2011-07-27 7 views
3

XMLでうまく動作するjerseyからListを返そうとしていますが、JSONとして出力すると、「Javaクラスのメッセージ本文ライター... Java ...およびMIMEメディアタイプapplication/jsonが見つかりませんでした。 "JSON ArrayList in Jersey

私はjersey + jersey-json-1.9がXMLと同じようにJSONのために自動的にこれを処理したと思っていたので、ユーティリティリストを扱うための設定は行っていません。

他にも誰もが運がありますか?

答えて

2

私はこの同じ問題での私の最初の刺し傷は、このエラーメッセージで失敗したことがわかった、と別のSOの質問、Jersey: com.sun.jersey.server.impl.template.ViewableMessageBodyWriterに与えられたように、溶液がいた:私はジャージ-JSONモジュールを追加することを忘れていました私のプロジェクトに。

1

JSONのリストにはラッパーは必要ありませんが、JSONサポートの「POJOマッピング」スタイルを有効にする必要があります。

0

回答しました。これにはプロバイダの作成が必要でした。コード以下の通り:

@Provider 
@Singleton 
@Produces(MediaType.APPLICATION_JSON) 
public class ContextResolver extends JacksonJaxbJsonProvider{ 

    public ContextResolver() throws Exception { 
     super(); 
     ObjectMapper mapper = new ObjectMapper(); 
     setMapper(mapper); 
    } 
} 
0

最近のJersey jsonライブラリ(2012年9月1日)でJSON配列「バグ」を解決することができました。秘密の要素はJSONConfigurationとContextResolverの魔法です。完全なコード例があり、カスタマイズされたContextResolverと残りのアプリケーションクラスを参照してください。最初の見方では、多少ファジィなロジックかもしれません。

How to serialize Java primitives using Jersey REST

プリミティブおよびゼロまたは単一要素のリスト配列はJSON文書に適切にシリアライズされています。カスタマイズされたリゾルバがなければ、Javaのリストが空の場合、適切なjson []配列フィールドを取得できません。私の投稿には、必要なすべての.jarライブラリがリストアップされています。最新のv1.14 Jerseyアーカイブを使用しています。