Search code examples
rest-assuredrest-assured-jsonpath

Don't want to include certain values in Payload in Rest Assured


I am using Rest Assured framework where I dont want to use certrain varaibles that I have declared in the POJO.

package pojo;

import java.util.List;

public class DispositionStatus {

    private String name;
    private String code;
    private String dispositionList;
    private String parentDisposition;
    private List<Data> data;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDispositionList() {
        return dispositionList;
    }

    public void setDispositionList(String dispositionList) {
        this.dispositionList = dispositionList;
    }

    public String getParentDisposition() {
        return parentDisposition;
    }

    public void setParentDisposition(String parentDisposition) {
        this.parentDisposition = parentDisposition;
    }

    public List<Data> getData() {
        return data;
    }

    public void setData(List<Data> data) {
        this.data = data;
    }

}

Now I want to not use name and code in the payload , what changes shall I make in the StepDefinition here:

@Then("Uses the token and create Bulk disposition status payload with {string} {string}")
    public void uses_the_token_generated_and_created_bulk_disposition_status_payload(String name , String code)
            throws IOException {
        Data firstStatus = new Data("NoAnswer","NOANS");
        Data secondStatus = new Data("Answer", "ANSWR");
        datajson.add(firstStatus);
        datajson.add(secondStatus);
        res = given().spec(requestSpecification()).body(data.addDispositionStatus(name, code, listId, datajson))
                .relaxedHTTPSValidation();
    }

I am trying to add the payload in post request like :

{
    "data": [
        {
            "test": "saumy",
            "test2": "say1y"
        },
        {
            "test": "saumy",
            "test2": "say1y"
        }
    ],
    "dispositionList": "11379"
}

I dont want to use name and code


Solution

  • Annotation @JsonInclude(JsonInclude.Include.NON_NULL) will help you. Any field has null value will not be deserialized.

    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class DispositionStatus {...}