製品に対して次の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応答は非常に複雑であり、必要なフィールドは1つだけですが、サブノードごとにまったく新しいクラスを作成する必要はありません。