Wie wird ein verschachtelter Wert mithilfe von Jackson-Annotationen einer Eigenschaft zugeordnet?

Sagen wir, ich mache einen Aufruf einer API, reagiert mit dem folgenden JSON-für ein Produkt:

{
  "id": 123,
  "name": "The Best Product",
  "brand": {
     "id": 234,
     "name": "ACME Products"
  }
}

Ich bin in der Lage, zum anzeigen der Produkt-id und den Namen nur gut mit Jackson Anmerkungen:

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;
    }
}

Werden und anschließend über die Methode fromJson zu erstellen das Produkt:

  JsonNode apiResponse = api.getResponse();
  Product product = Json.fromJson(apiResponse, Product.class);

Aber jetzt bin ich versucht, herauszufinden, wie zu packen, die Marke, die eine nested-Eigenschaft. Ich hatte gehofft, dass sowas funktionieren würde:

    @JsonProperty("brand.name")
    public String getBrandName() {
        return brandName;
    }

Aber natürlich Tat es das nicht. Gibt es einen einfachen Weg das zu erreichen, was ich will, mit Anmerkungen?

Den eigentlichen JSON-Antwort, die ich bin versucht zu analysieren, ist sehr Komplex, und ich will nicht zu haben, um eine ganze neue Klasse für jeden sub-Knoten, obwohl ich nur ein einziges Feld.

InformationsquelleAutor der Frage kenske | 2016-05-03

Schreibe einen Kommentar