2011-01-20 9 views
4

私は、Resteasy 2.0.1.GAとResteasy- jettison-provider-1.2.GAをJAXBアノテーションとともに使用しています。また、すべての数値を含むStringプロパティを持つときはいつでも(String groupName="1111"; )、JSONレスポンスは二重引用符を削除することで数字として表示します。 String groupName="oneoneoneoneone";に変更すると、JSONレスポンスはそれをスティングとして扱い、応答に二重引用符を保持します。 Jettisonプロバイダに、そのデータの種類ではなく、その値に基づいてデータを応答に厳密に解釈させる方法はありますか?JettisonとJAXBはJSONレスポンスのデータ型を自動的に変更します

答えて

4

これはJettisonの暗黙の「機能」であると思われます。実際のデータをイントロスペクトし、最適なタイプのものが何であるか把握しようとします。私は前にそれを見つけた、そしてそれは怒っている。

Jettisonを完全に削除し、代わりにRestEasy Jackson supportを使用することを強くおすすめします。 Jacksonははるかに優れた品質のライブラリであり、これらの「役立つ」機能に悩まされていません。それはまたJettisonのようにsupports JAXB annotationsです。

+0

お返事ありがとうございます。私はジャクソンを試しましたが、問題はJAXBのアノテーションに非常に依存しているので、私たちにとって大きな改訂点です。あなたは、スイッチングプロバイダーの他にこれを回避する方法を知っていますか? –

+1

@Colin:ジャクソンはJAXBアノテーションもサポートしています。 – skaffman

+0

Skaffman、仕様(http://wiki.fasterxml.com/JacksonJAXBAnnotations)に続いてJAXB注釈イントロスペクトを登録しようとしましたが、それを自分の安らかなフレームワーク(RESTEasy)に動的にプラグインする方法はわかりません。レスポンスオブジェクトの直列化中に呼び出されるように、それをどのように登録できますか?私の側には確かに知識のギャップがありますが、私はその統合に関して多くの助けを見つけることができません。 –

0

サーバの起動時に以下のシステムプロパティを設定するlistnerを持っています。

System.setProperty("jettison.mapped.typeconverter.class" 
        ,"org.codehaus.jettison.mapped.SimpleConverter"); 

プロパティがsimpleConverterに設定されるとは、データ型が文字列またはint型であるかどうかを常に文字列などの値は重要ではありません出力を投棄。

関連する問題