The three things that I learned today are mentioned below.
Learning 1: Exclude null fields in Spring Boot REST JSON API response
Spring Boot uses Jackson to convert to JSON. Spring Boot allows you to configure through a configuration property whether you want to include null values or not. By default, serialised JSON will include null values as well. To remove null values, you should use following property add it to your application.properties
.
spring.jackson.default-property-inclusion=NON_NULL
If you are using Java 8 or Google’s Gauva and want to exclude Optional type as well then you should use NON_ABSENT
value.
spring.jackson.default-property-inclusion=NON_ABSENT
To learn about all the values, you should look at Jackson’s com.fasterxml.jackson.annotation.JsonInclude.Include
enumeration.
Learning 2: Serializing Enum value with Jackson
The second learning that I had today was around how to properly serialize enum values in Jackson. I had enum shown below
public enum Status { SUCCESS("success"), ERROR("error"); private final String status; Status(String status) { this.status = status; } }
I wanted my JSON structure to be as shown below.
{ "status": "success" }
To achieve that you have to Jackson’s @JsonCreator
and @JsonValue
annotation as shown below.
public enum Status { SUCCESS("success"), ERROR("error"); private final String status; @JsonCreator Status(String status) { this.status = status; } @JsonValue public String getStatus() { return this.status; } }
Learning 3: Change remote of a branch in Git
$ git branch develop --set-upstream-to=upstream/develop
You can view remote tracked by local branch using the following command.
$ git branch -lvv