Wie ordne ich einer Eigenschaft einen verschachtelten Wert mithilfe von Jackson-Anmerkungen zu?
Nehmen wir an, ich rufe eine API auf, die mit dem folgenden JSON für ein Produkt antwortet:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Ich kann die Produkt-ID und den Produktnamen mithilfe von Jackson-Anmerkungen gut zuordnen:
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;
}
}
Und dann mit der fromJson-Methode das Produkt erstellen:
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
Aber jetzt versuche ich herauszufinden, wie ich den Markennamen finden kann, der eine verschachtelte Eigenschaft ist. Ich hatte gehofft, dass so etwas funktionieren würde:
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
Aber natürlich nicht. Gibt es eine einfache Möglichkeit, mithilfe von Anmerkungen das zu erreichen, was ich möchte?
Die tatsächliche JSON-Antwort, die ich zu analysieren versuche, ist sehr komplex, und ich möchte nicht für jeden Unterknoten eine neue Klasse erstellen müssen, obwohl ich nur ein einziges Feld benötige.