[解決済み] 特定のフィールドに対するJackson JSONカスタムシリアライゼーション
2022-12-19 23:15:48
質問
Jackson JSON Processor を使用して、カスタム フィールド レベルのシリアライズを行う方法はありますか。例えば、私は、クラス
public class Person {
public String name;
public int age;
public int favoriteNumber;
}
は以下のようなJSONにシリアライズされます。
{ "name": "Joe", "age": 25, "favoriteNumber": "123" }
なお、age=25はエンコードされる際に
番号
としてエンコードされ、favoriteNumber=123 は
文字列
. Jacksonは箱から出して、マーシャル
int
を数値に変換します。この場合、favoriteNumberは文字列としてエンコードされるようにしたいのです。
どのように解決するのですか?
以下のようにカスタムシリアライザーを実装することができます。
public class Person {
public String name;
public int age;
@JsonSerialize(using = IntToStringSerializer.class, as=String.class)
public int favoriteNumber:
}
public class IntToStringSerializer extends JsonSerializer<Integer> {
@Override
public void serialize(Integer tmpInt,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
jsonGenerator.writeObject(tmpInt.toString());
}
}
からのオートボックスはJavaが処理する必要があります。
int
から
Integer
をプレゼントします。
関連
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Uncaught ReferenceError: は定義されていません。
-
ジャバアレイ
-
Junitのユニットテストエラー
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] シリアライズ中にフィールドの値が NULL の場合、それを無視するように Jackson に指示するにはどうすればよいですか?
-
[解決済み] Jackson JSONとHibernate JPAによる無限再帰の問題
-
[解決済み] Jackson は 'is' を削除してプリミティブな boolean フィールドの名前を変更した。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
executeQuery()でデータ操作文が発行できない。解決方法
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Junitのユニットテストはjava.lang.Testを報告します。
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
FindBugの使用概要
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
Java:未解決コンパイル問題の解決方法
-
テストが空であるかどうかを判断するためのオプションの処理