Digamos que estou fazendo uma chamada para uma API que responde com o seguinte JSON para um produto:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Consigo mapear a id e o nome do produto perfeitamente usando as anotações de Jackson:
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;
}
}
E então usando o método fromJson para criar o produto:
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
Mas agora estou tentando descobrir como obter o nome da marca, que é uma propriedade aninhada. Eu esperava que algo assim funcionasse:
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
Mas é claro que não. Existe uma maneira fácil de realizar o que desejo usando anotações?
A resposta JSON real que estou tentando analisar é muito complexa e não quero ter que criar uma nova classe inteira para cada subnó, embora precise apenas de um único campo.