gpt4 book ai didi

java - 从另一个 Java Bean 构建 Java Bean

转载 作者:行者123 更新时间:2023-11-30 03:31:03 25 4
gpt4 key购买 nike

我想构建一个 VO 以从另一个 VO 生成 JSON,我可以通过两种不同的方式来完成,我想知道其中一种更适合您:

第一种方法是在构造函数中设置一些变量

@JsonAutoDetect
public static class SkuDataVO implements Serializable {

@JsonProperty
private String skuTitle;
@JsonProperty
private String headline;
@JsonProperty
private BigDecimal originalPrice;
@JsonProperty
private BigDecimal offerPrice;
@JsonProperty
private Integer cap;
@JsonProperty
private BigDecimal postagePerUnit;
@JsonProperty
private Float revenueShare;

public SkuDataVO(SubmissionSku submissionSku, String title, String headline) {
this.skuTitle = title;
this.headline = headline;
this.originalPrice = submissionSku.getOriginalPrice();
this.offerPrice = submissionSku.getPrice();
this.cap = submissionSku.getCap();
this.revenueShare = submissionSku.getRevenueShare();
this.postagePerUnit = submissionSku.getPostageCost();
}

//getter on variables

第二种方式是调用 getter 中第二个 VO 的 getter。

@JsonAutoDetect
public static class SkuDataVO implements Serializable {

@JsonProperty
private String skuTitle;
@JsonProperty
private String headline;
@JsonIgnore
private SubmissionSku submissionSku;

public SkuDataVO(SubmissionSku submissionSku, String title, String headline) {
this.submissionSku = submissionSku;
this.skuTitle = title;
this.headline = headline;
}

@JsonProperty
public BigDecimal getOriginalPrice() {
return submissionSku.getOriginalPrice();
}

@JsonProperty
public BigDecimal getOfferPrice() {
return submissionSku.getPrice();
}

@JsonProperty
public Integer getCap() {
return submissionSku.getCap();
}

@JsonProperty
public Float getRevenueShare() {
return submissionSku.getRevenueShare();
}

@JsonProperty
public BigDecimal getPostagePerUnit() {
return submissionSku.getPostageCost();
}

public String getSkuTitle() {
return skuTitle;
}

public String getHeadline() {
return headline;
}

最佳答案

请查看@JsonUnwrapped annotation 。我认为这正是您的用例所需要的:

public static class SkuDataVO implements Serializable {

public String skuTitle;

public String headline;

@JsonUnwrapped // <-- magic happens here
public SubmissionSku submissionSku;

public SkuDataVO(SubmissionSku submissionSku, String title, String headline) {
this.submissionSku = submissionSku;
this.skuTitle = title;
this.headline = headline;
}
}

我使用了 public 字段,因为这不是一个实际的对象,而只是一个用于适当格式化 JSON 的 DTO(数据传输对象)。 p>

此外,我认为您实际上不需要使用 @JsonProperty@JsonAutoDetect,因为您没有更改默认的 Jackson 行为。

关于java - 从另一个 Java Bean 构建 Java Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29029368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com