0

Below is the Expected JSON

 {
      "checkIn": "2023-06-03",
      "checkOut": "2023-06-04",
      "roomsInfo": [
        {
          "adultsCount": 2,
          "kidsAges": []
        }
      ],
      "searchInfo": null,
      "crossSellDetail": null,
      "query": "Chalets%2B"
    }

First POJO- RoomsInfo

import java.util.List;
import javax.annotation.processing.Generated;

@Generated("jsonschema2pojo")
public class RoomsInfo {
private int adultsCount;
private List<Integer> kidsAges;

/**
 * No args constructor for use in serialization
 *
 */
public RoomsInfo() {
}

/**
 *
 * @param adultsCount
 * @param list
 */
public RoomsInfo(int adultsCount, List<Integer> list) {
    super();
    this.adultsCount = adultsCount;
    this.kidsAges = list;
}

public int getAdultsCount() {
    return adultsCount;
}

public void setAdultsCount(int adultsCount) {
    this.adultsCount = adultsCount;
}

public List<Integer> getKidsAges() {
    return kidsAges;
}

public void setKidsAges(List<Integer> kidsAges) {
    this.kidsAges = kidsAges;
}
}

Second POJO - Example

public class Example {

private String checkIn;
private String checkOut;
private RoomsInfo roomsInfo;
private Object searchInfo;
private Object crossSellDetail;
private String query;

/**
*
* @param roomsInfo
* @param checkIn
* @param searchInfo
* @param crossSellDetail
* @param query
* @param checkOut
*/
public Example(String checkIn, String checkOut, RoomsInfo roomsInfo, Object searchInfo, Object crossSellDetail, String query) {
super();
this.checkIn = checkIn;
this.checkOut = checkOut;
this.roomsInfo = roomsInfo;
this.searchInfo = searchInfo;
this.crossSellDetail = crossSellDetail;
this.query = query;
}

public String getCheckIn() {
return checkIn;
}

public void setCheckIn(String checkIn) {
this.checkIn = checkIn;
}

public String getCheckOut() {
return checkOut;
}

public void setCheckOut(String checkOut) {
this.checkOut = checkOut;
}

public RoomsInfo getRoomsInfo() {
return roomsInfo;
}

public void setRoomsInfo(RoomsInfo roomsInfo) {
this.roomsInfo = roomsInfo;
}

public Object getSearchInfo() {
return searchInfo;
}

public void setSearchInfo(Object searchInfo) {
this.searchInfo = searchInfo;
}

public Object getCrossSellDetail() {
return crossSellDetail;
}

public void setCrossSellDetail(Object crossSellDetail) {
this.crossSellDetail = crossSellDetail;
}

public String getQuery() {
return query;
}

public void setQuery(String query) {
this.query = query;
}

}

public class TestUtil {

/**
 * This method is used to convert POJO Object to a JSON String...
 * 
 * @param obj
 * @return jsonString
 */

public static String getSerializedJSON(Object obj) {
    ObjectMapper mapper = new ObjectMapper();
    String jsonString = null;
    try {
        jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
        System.out.println("JSON BODY PAYLOAD ====> "+ jsonString);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

    return jsonString;
}

}

public class UserInfo {

@Test
public static  String createUserWithFullJson() {

List<Integer> list = new ArrayList<Integer>();
list.add(10);

    
RoomsInfo room = new RoomsInfo(2, list);
Example ex = new Example("2023-06-01", "2023-06-02", room, null, null, "Chalets%2B");
    
String UserJsonPayload = TestUtil.getSerializedJSON(ex);
System.out.println(UserJsonPayload);
return UserJsonPayload;
}

}

Actual OutPut

{
  "checkIn" : "2023-06-01",
  "checkOut" : "2023-06-02",
  "roomsInfo" : {
    "adultsCount" : 2,
    "10" : null
  },
  "searchInfo" : null,
  "crossSellDetail" : null,
  "query" : "Chalets%2B"
}

Expected OutPut

{
  "checkIn" : "2023-06-01",
  "checkOut" : "2023-06-02",
  "roomsInfo": [
    {
      "adultsCount": 2,
      "kidsAges": []
    }
  ],
  "searchInfo": null,
  "crossSellDetail": null,
  "query": "Chalets%2B"
}
Abhay Chaudhary
  • 1,763
  • 1
  • 8
  • 13

1 Answers1

0

Assuming you want to Keeps kids age as empty ,modify your Test case to set is as empty array , in your current code your are setting it to a list with a element as 10

@Test
    public void createUserWithFullJson() {

        List<Integer> list = new ArrayList<Integer>();

        RoomsInfo room = new RoomsInfo(2, list);

        Example ex = new Example("2023-06-01", "2023-06-02", Arrays.asList(room), null, null,
            "Chalets%2B");

        String UserJsonPayload = TestUtil.getSerializedJSON(ex);

    }

Example POJO

public class Example {

    private String checkIn;
    private String checkOut;
    private List<RoomsInfo> roomsInfo;
    private Object searchInfo;
    private Object crossSellDetail;
    private String query;

    /**
     * @param roomsInfo
     * @param checkIn
     * @param searchInfo
     * @param crossSellDetail
     * @param query
     * @param checkOut
     */
    public Example(String checkIn, String checkOut, List<RoomsInfo> roomsInfo, Object searchInfo,
        Object crossSellDetail, String query) {
        super();
        this.checkIn = checkIn;
        this.checkOut = checkOut;
        this.roomsInfo = roomsInfo;
        this.searchInfo = searchInfo;
        this.crossSellDetail = crossSellDetail;
        this.query = query;
    }

    public String getCheckIn() {
        return checkIn;
    }

    public void setCheckIn(String checkIn) {
        this.checkIn = checkIn;
    }

    public String getCheckOut() {
        return checkOut;
    }

    public void setCheckOut(String checkOut) {
        this.checkOut = checkOut;
    }

    public List<RoomsInfo> getRoomsInfo() {
        return roomsInfo;
    }

    public void setRoomsInfo(List<RoomsInfo> roomsInfo) {
        this.roomsInfo = roomsInfo;
    }

    public Object getSearchInfo() {
        return searchInfo;
    }

    public void setSearchInfo(Object searchInfo) {
        this.searchInfo = searchInfo;
    }

    public Object getCrossSellDetail() {
        return crossSellDetail;
    }

    public void setCrossSellDetail(Object crossSellDetail) {
        this.crossSellDetail = crossSellDetail;
    }

    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }


}

RoomsInfo POJO

public class RoomsInfo {

    private Integer adultsCount;


    private List<Integer> kidsAges;


    /**
     * No args constructor for use in serialization
     */
    public RoomsInfo() {
    }

    /**
     * @param adultsCount
     * @param kidsAges
     */
    public RoomsInfo(Integer adultsCount, List<Integer> kidsAges) {
        super();
        this.adultsCount = adultsCount;
        this.kidsAges = kidsAges;
    }

    public Integer getAdultsCount() {
        return adultsCount;
    }

    public void setAdultsCount(Integer adultsCount) {
        this.adultsCount = adultsCount;
    }

    public List<Integer> getKidsAges() {
        return kidsAges;
    }

    public void setKidsAges(List<Integer> kidsAges) {
        this.kidsAges = kidsAges;
    }

}

Output

JSON BODY PAYLOAD ====> {
  "checkIn" : "2023-06-01",
  "checkOut" : "2023-06-02",
  "roomsInfo" : [ {
    "adultsCount" : 2,
    "kidsAges" : [ ]
  } ],
  "searchInfo" : null,
  "crossSellDetail" : null,
  "query" : "Chalets%2B"
}
Abhay Chaudhary
  • 1,763
  • 1
  • 8
  • 13