[解決済み] シリアライズとデシリアライズでJSONのプロパティの名前が違う
2022-04-14 20:29:15
質問
クラスで1つのフィールドを持ち、Jacksonライブラリでシリアライズ/デシリアライズの際に異なる名前を付けることは可能ですか?
例えば、私はクラス "Coordiantes"を持っています。
class Coordinates{
int red;
}
JSONからデシリアライズする場合は、以下のような形式にしたい。
{
"red":12
}
しかし、オブジェクトをシリアライズすると、このような結果になるはずです。
{
"r":12
}
を適用して実装してみました。
@JsonProperty
アノテーションをゲッターとセッターの両方で使用します (異なる値で)。
class Coordiantes{
int red;
@JsonProperty("r")
public byte getRed() {
return red;
}
@JsonProperty("red")
public void setRed(byte red) {
this.red = red;
}
}
が、例外が発生しました。
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: 認識できないフィールド "red"
どのように解決するのですか?
テストしたところ、これはうまくいきました。
public class Coordinates {
byte red;
@JsonProperty("r")
public byte getR() {
return red;
}
@JsonProperty("red")
public void setRed(byte red) {
this.red = red;
}
}
メソッド名は異なるはずなので、jacksonはそれを1つのフィールドとしてではなく、異なるフィールドとして解析するということです。
以下はテストコードです。
Coordinates c = new Coordinates();
c.setRed((byte) 5);
ObjectMapper mapper = new ObjectMapper();
System.out.println("Serialization: " + mapper.writeValueAsString(c));
Coordinates r = mapper.readValue("{\"red\":25}",Coordinates.class);
System.out.println("Deserialization: " + r.getR());
結果
Serialization: {"r":5}
Deserialization: 25
関連
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] シリアライズ中にフィールドの値が NULL の場合、それを無視するように Jackson に指示するにはどうすればよいですか?
-
[解決済み] シリアライズ時のみ@JsonIgnoreを使用し、デシリアライズ時には使用しない。
-
[解決済み】JACKSONがフィールドのみを使用するように指定する方法 - できればグローバルに使用したい
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
java.util.NoSuchElementException 原因解析と解決方法
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
IllegalArgumentException この例外を解決する方法
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
SpringBootApplication を型解決できない。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
Javaエラーメッセージがenclosingクラスでない
-
org.glassfish.jersey.servlet.ServletContainer
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。