jackson-module-kotlin icon indicating copy to clipboard operation
jackson-module-kotlin copied to clipboard

Remove `NullToEmpty` options or change backend

Open k163377 opened this issue 10 months ago • 0 comments

Use case

The NullToEmptyCollection/Map option can be replaced by configOverride as follows

jacksonObjectMapper().apply {
    configOverride(List::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)
    configOverride(Map::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)
}

Also, the current NullToEmpty option only applies to deserialization using creators and not to setters, a problem that will be resolved.

Describe the solution you'd like

Removing these options provides the following benefits

  1. Reduce the number of codes to be maintained
  2. Minor performance improvement for when the value is nullish

Describe alternatives you've considered

The disadvantage of this method is that it requires an explicit specification for each type. For example, a specification for List will not apply to an ArrayList. Similarly, a specification made for a Collection will not apply to a List or Set.

Therefore, the policy may be to switch only the backend of the process and leave it as a function.

Additional context

k163377 avatar Jan 05 '25 12:01 k163377