Serialization with value class
- Dominant language
- Java
- Stars
- 24.2k
- Forks
- 4.5k
- Avg merge
- 6d 4h
- Merged PRs (30d)
- 12
Description
I figured out, that serialization of value class is ok, only when inside another class and single item.
When you want to serialize a list instances of inline classes into another filed or simple instance inline class, then you get unexpected behaviour, i think. Cases are very similar.
```
// definitions
@JvmInline
value class StringWrapper(
val value: String?,
)
data class DataClassToSerialize(
@SerializedName("fieldName")
val fieldName: StringWrapper,
)
data class ListDataClassToSerialize(
@SerializedName("fieldName")
val fieldName: List,
)
// examples
val stringWrapper = StringWrapper("stringValue")
val resultWrapperJson = Gson().toJson(stringWrapper)
// actual: {"value":"stringValue"}, expected: "stringValue"
val dataClassToSerialize = DataClassToSerialize(
fieldName = stringWrapper,
)
val resultJson = Gson().toJson(dataClassToSerialize)
// {"fieldName":"stringValue"} It's ok
val listDataClassToSerialize = ListDataClassToSerialize(
fieldName = listOf(stringWrapper),
)
val resultListJson = Gson().toJson(listDataClassToSerialize)
// actual: {"fieldName":[{"value":"stringValue"}]}, expected: {"fieldName":[{"stringValue"}]}
```
Contributor guide
Assessment
This issue has not been assessed yet.