I want to create below JSON payload
{
"maxResults":3,
"counter":0,
"customerParameters":{
"filters":[
{
"name":"customerId",
"operator":"=",
"value":["hello"]
}
]
},
"dealerParameters":[
{
"name":"club"
},
{
"name":"token"
}
]
}
Coded so far:
@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
}
CustomerParameters.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;
}
}
Filter.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
}
Missing Part:
@Controller
public class TestContoller {
RestTemplate restTemplate;
Should I instantiate each pojo class with new operator as below and set all required parameters? or any other approach of creating JSON payload?
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);
For DealerParameter class, I want to create multiple objects with same key different value(see the json payload I mentioned above). Below code creates only one object "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
}
you are already using " ObjectMapper ", And ObjectMapper has readValue() method. By using readValue() method you can populate all data at a time like below:--
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.