[解決済み] ジャクソン・アノテーションを使用して、ネストされた値をプロパティにマッピングする方法は?
2022-12-07 01:32:26
質問
ある商品について、次のようなJSONで応答するAPIを呼び出したとします。
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Jacksonアノテーションを使って、商品IDと商品名をうまくマッピングできていますね。
public class ProductTest {
private int productId;
private String productName, brandName;
@JsonProperty("id")
public int getProductId() {
return productId;
}
public void setProductId(int productId) {
this.productId = productId;
}
@JsonProperty("name")
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
}
そして、fromJsonメソッドを使って商品を作成します。
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
しかし今、ネストされたプロパティであるブランド名を取得する方法を考え出そうとしています。このようなものがうまくいくことを期待していました。
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
しかし、もちろんそうではありませんでした。アノテーションを使って私が望むことを簡単に実現する方法はないでしょうか?
私が解析しようとしている実際の JSON 応答は非常に複雑で、単一のフィールドしか必要としないにもかかわらず、すべてのサブノードに対してまったく新しいクラスを作成する必要があるのは困ります。
どのように解決するのですか?
このように実現することができます。
String brandName;
@JsonProperty("brand")
private void unpackNameFromNestedObject(Map<String, String> brand) {
brandName = brand.get("name");
}
関連
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
セミコロン期待値エラー解決
-
Java基礎編 - オブジェクト指向
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Javaでネストされたループから抜け出すには?
-
[解決済み] Jackson を使用してオブジェクトの配列をデシリアライズする方法
-
[解決済み] シリアライズ中にフィールドの値が NULL の場合、それを無視するように 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の非静的メソッドを静的に参照することができない
-
プロジェクトの依存関係を解決できない。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
Uncaught ReferenceError: は定義されていません。
-
強制型変換について
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
1分でわかる!恋人の写真をIDEAの背景画像に設定する方法【おすすめ集
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
Zipファイルの圧縮・解凍にantを使用する