I am creating a Rest service which calls an external service. I have this problem: the external service I call responds in two ways depending on the case of Success or Failed. This is json:
JavaScript
x
json{
"result": "001",
"status": "Success",
"response": {
"codiceCase": "CAS-46759-Q8P7X3",
"guidCase": "88458d32-dd42-ec11-8c62-0022489d2f61"}
}
OR
{
"result": "002",
"status": "Failed",
"errorManagement": {
"errorCode": "E02",
"errorDescription": "field not value in body"
}
}
Well I created 3 simple classes:
- class XXX… private String result, status; …. getter & setter
- class Response… private String codiceCase, guidCase; … getter & setter
- class ErrorManagement…private String errorCode, errorDescription;… getter & setter But when I populate with my mock, the json is always formed with the class field that I don’t care for example:
JavaScript
{
"result": "001",
"status": "Success",
"response": {
"codiceCase": "CAS-46759-Q8P7X3",
"guidCase": "88458d32-dd42-ec11-8c62-0022489d2f61" },
{
***"errorMessage"**: null}
}
How can I get only 2 of the 3 classes returned as json in my mock? Thanks for your help.
Advertisement
Answer
I suppose you’re using Jackson to deserialize JSON as this is – I think – the default for spring.
With Jackson you can annotate the model class to omit null
values in the JSON string representation:
JavaScript
@JsonInclude(Include.NON_NULL)
public class Model { … }