2008 年のJIRA エントリで概説された Jettison の「機能」があり、次の問題に言及しています。
「要素」の値を「00102」にするとします。出力は次のようになります。
{ "Response":
{ "element": "00102" }
}
しかし今、「要素」を「102」に設定しました。
{ "Response":
{ "element": 102 }
}
Jettison が助けになろうとしていることは理解していますが、真剣に、私に代わってこの種のことを決定する必要はありません。いいえ、結構です。
現在の回避策
現時点では、ここにあるユーザーによって概説されているソリューションを使用しました。このユーザーは、Bean 構成に次を追加します。
<bean id="simpleConverter" class="org.codehaus.jettison.mapped.SimpleConverter"/>
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider">
<property name="typeConverter" ref="simpleConverter"/>
</bean>
これは、明らかに整数であっても、すべての要素が強制的に文字列であると言うほど、問題を部分的に解決します。これで、少なくとも、データが保持する構造が正確にわかり、要素の型が文字列から整数に変更されたり、知らないうちに元に戻ったりすることはありません。
問題
ただし、別の要素を整数として出力したい場合でも、現在は出力できません。要素ごとにではなく、要素の出力をサービス全体に強制することしかできないようです。
「Jackson を使用する」という提案 (フレームワークが Jettison を明示的に使用しているため、従うことはできません) 以外に、JSON 出力で文字列として強制したい要素を指定する方法はありますか?