从Java Pojo Jackson创建复杂的JSON负载



我想在下面创建JSON负载

{
"maxResults":3,
"counter":0,
"customerParameters":{
"filters":[
{
"name":"customerId",
"operator":"=",
"value":["hello"]
}
]
},
"dealerParameters":[
{
"name":"club"
},
{
"name":"token"
}
]
}

到目前为止编码:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"maxResults",
"counter",
"customerParameters",
"dealerParameters"
})
public class CustomerModel {
@JsonProperty("maxResults")
private Integer maxResults;
@JsonProperty("counter")
private Integer counter;
@JsonProperty("customerParameters")
private CustomerParameters customerParameters;
@JsonProperty("dealerParameters")
private List<DealerParameter> dealerParameters = null;
@JsonProperty("customerParameters")
public CustomerParameters getCustomerParameters() {
return customerParameters;
}
@JsonProperty("customerParameters")
public void setCustomerParameters(CustomerParameters customerParameters) {
this.customerParameters = customerParameters;
}
@JsonProperty("dealerParameters")
public List<DealerParameter> getDealerParameters() {
return dealerParameters;
}
@JsonProperty("dealerParameters")
public void setDealerParameters(List<DealerParameter> dealerParameters) {
this.dealerParameters = dealerParameters;
} 
// Getter/Setter for other params
}

客户参数.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"filters"
})
public class CustomerParameters {
@JsonProperty("filters")
private List<Filter> filters = null;
// Setter and Getter for filters parameter
}

DealerParameters.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"name"
})
public class DealerParameter {
@JsonProperty("name")
private String name;
@JsonProperty("name")
public String getName() {
return name;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
}

过滤器.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"name",
"operator",
"value"
})
public class Filter {
@JsonProperty("name")
private String name;
@JsonProperty("operator")
private String operator;
@JsonProperty("value")
private List<String> value = null;
@JsonProperty("value")
public List<String> getValue() {
return value;
}
@JsonProperty("value")
public void setValue(List<String> value) {
this.value = value;
}
// Setter and Getter for other properties
}

缺少部件:

@Controller
public class TestContoller {
RestTemplate restTemplate;

  1. 我应该用下面的新运算符实例化每个pojo类并设置所有必需的参数吗?或者任何其他创建JSON有效负载的方法?

    CustomerModel customerModel= new CustomerModel();
    customerModel.setMaxResults(1);
    Filter filter= new Filter();
    filter.setName("customerID");
    filter.setOperator("-");
    filter.setValue(Arrays.asList("club"));
    CustomerParameters customerParameters = new CustomerParameters();
    customerParameters.setFilters(Arrays.asList(filter));
    customerModel.setCustomerParameters(customerParameters); 
    
  2. 对于DealerParameter类,我想创建多个具有相同键不同值的对象(请参阅我上面提到的json负载(。下面的代码只创建一个对象";name":"dealerId";

    DealerParameter dealerParameter = new DealerParameter();
    dealerParameter.setName("dealerId");
    customerModel.setDealerParameters(dealerParameter);
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.writeValueAsString(customerModel);
    restTemplate.exchange(todo); // restful service call
    

    }

您已经在使用">ObjectMapper";,ObjectMapper有readValue((方法。通过使用readValue((方法,您可以一次填充所有数据,如下所示:--

ObjectMapper objectMapper = new ObjectMapper();
//populating data from json string to POJO  
CustomerModel  customerModel = objectMapper.readValue(<json String>,CustomerModel.class);
System.out.println(objectMapper.writeValueAsString(customerModel); // print all data

最新更新