micronaut-projects / micronaut-serialization

Build Time Serialization APIs for Micronaut
Apache License 2.0
26 stars 19 forks source link

@JsonInclude should be equivalent to @JsonInclude(JsonInclude.Include.ALWAYS) #900

Open sdelamo opened 2 months ago

sdelamo commented 2 months ago

@JsonInclude(JsonInclude.Include.ALWAYS)

package mnserdenullable;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.micronaut.core.annotation.NonNull;
import io.micronaut.core.annotation.Nullable;
import io.micronaut.serde.annotation.Serdeable;

@JsonInclude(JsonInclude.Include.ALWAYS)
@Serdeable
public record Book(@NonNull String title,
                   @Nullable  String author) {
}

For an object such as:

new Book("The Hobbit", null);

Renders:

{"title":"The Hobbit","author":null}

@JsonInclude

JsonInclude.Include.ALWAYS is the default value. However, if you use @JsonInclude instead of @JsonInclude(JsonInclude.Include.ALWAYS) it renders {"title":"The Hobbit"}

package mnserdenullable;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.micronaut.core.annotation.NonNull;
import io.micronaut.core.annotation.Nullable;
import io.micronaut.serde.annotation.Serdeable;

@JsonInclude
@Serdeable
public record Book(@NonNull String title,
                   @Nullable  String author) {
}