首页 > 解决方案 > 使用嵌套在 Object 中的 Object 生成 JSON 数据

问题描述

在这里稍微打结,并试图理解 JSON 到 POJO 的映射,但仍然遇到棘手的问题。

我需要生成以下 JSON:

{"primaryCustomer":
   {
       "customerClaims":[]
   }
}

显然我需要一个primaryCustomer实例,它的 setter 需要一个空customerClaims数组对象。看起来很简单,但我无法到达那里。

给定 POJO 如下:

@Data
public class PrimaryCustomer {

    @JsonProperty("primaryCustomer")
    private PrimaryCustomer primaryCustomer;
    @JsonProperty("customerClaims")
    private CustomerClaims customerClaims;
}

和:

@Data
public class CustomerClaims {

    @JsonProperty("customerClaims")
    private List<Object> customerClaims = null;

}

并编写生成 JSON 的代码:

  pc = new PrimaryCustomer();
  cc = new CustomerClaims();
  
  cc.setCustomerClaims(new JSONArray());
  pc.setCustomerClaims(cc);

...产量:

{
  "primaryCustomer" : null,
  "customerClaims" : {
    "customerClaims" : []
  }
}

标签: javajsonjackson

解决方案


PrimaryCustomer在同一类中使用 with不会CustomerClaims产生您想要的结果并可能导致Stackoverflow错误。您可以创建一个JsonEntity类,PrimaryCustomer如下所示,

@Data
public class JsonEntity {

    @JsonProperty("primaryCustomer")
    private PrimaryCustomer primaryCustomer;
}

@Data
public class PrimaryCustomer {

    @JsonProperty("customerClaims")
    private CustomerClaims customerClaims;
}

以及生成 JSON 的代码:

json = new JsonEntity();
pc = new PrimaryCustomer();
cc = new CustomerClaims();

cc.setCustomerClaims(new JSONArray());
pc.setCustomerClaims(cc);
json.setPrimaryCustomer(pc);

我希望它有所帮助。


推荐阅读