0

在这里稍微打结,并试图理解 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" : []
  }
}
4

3 回答 3

0

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

我希望它有所帮助。

于 2020-07-06T15:08:37.280 回答
0

试试这个 POJO

@Data
public class PrimaryCustomer {
    @JsonProperty("customerClaims")
    private CustomerClaims customerClaims;
}```
于 2020-07-06T13:05:43.330 回答
0

尝试这个

POJO:

public static @Data class Example {

        @JsonProperty("primaryCustomer")
        public PrimaryCustomer primaryCustomer;

    }

    public static @Data class PrimaryCustomer {

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

    }

测试 :

PrimaryCustomer a = new PrimaryCustomer();
a.setCustomerClaims(new JSONArray());

Example e = new Example();
e.setPrimaryCustomer(a);

String abc = new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(e);
System.out.println(abc);
于 2020-07-07T11:37:19.440 回答