File tree Expand file tree Collapse file tree 4 files changed +52
-1
lines changed
main/kotlin/com/fasterxml/jackson/module/kotlin
test/kotlin/com/fasterxml/jackson/module/kotlin/test/github Expand file tree Collapse file tree 4 files changed +52
-1
lines changed Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ Contributors:
1818# 2 .18.3 (not yet released)
1919
2020WrongWrong (@k163377 )
21+ * #904 : Fixed an error when serializing a `value class` that wraps a `Map`
2122* #900 : Fixed an issue where some tests were not running
2223
2324# 2 .18.0 (26-Sep-2024)
Original file line number Diff line number Diff line change @@ -16,6 +16,10 @@ Co-maintainers:
1616= == Releases == =
1717-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1818
19+ 2.18 .3 (not yet released )
20+
21+ #904 : An error that occurred when serializing a `value class ` that wraps a `Map `(#873 ) has been fixed.
22+
19232.18 .2 (27 - Nov - 2024 )
20242.18 .1 (28 - Oct - 2024 )
2125
Original file line number Diff line number Diff line change @@ -62,7 +62,7 @@ object ValueClassUnboxSerializer : StdSerializer<Any>(Any::class.java) {
6262 return
6363 }
6464
65- provider.findValueSerializer (unboxed:: class .java).serialize(unboxed , gen, provider )
65+ provider.defaultSerializeValue (unboxed, gen)
6666 }
6767}
6868
Original file line number Diff line number Diff line change 1+ package com.fasterxml.jackson.module.kotlin.test.github
2+
3+ import com.fasterxml.jackson.module.kotlin.defaultMapper
4+ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
5+ import com.fasterxml.jackson.module.kotlin.readValue
6+ import kotlin.test.Test
7+
8+ class GitHub873 {
9+ @Test
10+ fun `should serialize value class` () {
11+
12+ val person = Person (
13+ mapOf (
14+ " id" to " 123" ,
15+ " updated" to " 2023-11-22 12:11:23" ,
16+ " login" to " 2024-01-15" ,
17+ ),
18+ )
19+
20+ val serialized = defaultMapper.writeValueAsString(
21+ TimestampedPerson (
22+ 123L ,
23+ Person (person.properties),
24+ )
25+ )
26+
27+ val deserialized = defaultMapper.readValue<TimestampedPerson >(serialized)
28+
29+ assert (
30+ deserialized == TimestampedPerson (
31+ 123L ,
32+ Person (person.properties),
33+ )
34+ )
35+ }
36+
37+ @JvmInline
38+ value class Person (
39+ val properties : Map <String , Any >,
40+ )
41+
42+ data class TimestampedPerson (
43+ val timestamp : Long ,
44+ val person : Person ,
45+ )
46+ }
You can’t perform that action at this time.
0 commit comments