6

値が Integer の範囲内にある場合、Jackson はすべての数値をデシリアライズして Integer にキャストし、代わりに Long にキャストします。すべての値を Long にキャストしたいと思います。問題の簡単な解決策はありますか?

4

1 に答える 1

6

Jackson は指定した型に逆シリアル化するため、プロパティを long または Long 型であると宣言すると、long として構築されます。しかし、おそらくあなたは「型指定されていない」構造にバインドしていますMapか?すべての値がLongtype の場合、次のように型を適切に宣言できます。

Map<String,Long> map = objectMapper.readValue(json, new TypeReference<Map<String,Long>>() { });

または、別の処理でカスタム デシリアライザーを追加できる場合がありObject.classます (デフォルトのデシリアライザーは ですorg.codehaus.jackson.map.deser.UntypedObjectDeserializer)。

あなたが実際に何をしようとしているのかを知っていれば助けになるかもしれません -IntegerそしてLong両方とも数字なので、多くの場合、区別はあまり重要ではありません...それで、Longsを必要とする理由は何ですか?

于 2010-06-29T23:45:34.913 に答える