File tree Expand file tree Collapse file tree 2 files changed +27
-10
lines changed
main/kotlin/com/fasterxml/jackson/module/kotlin
test/kotlin/com/fasterxml/jackson/module/kotlin/test/github Expand file tree Collapse file tree 2 files changed +27
-10
lines changed Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ object ValueClassUnboxSerializer : StdSerializer<Any>(Any::class.java) {
58
58
val unboxed = value::class .java.getMethod(" unbox-impl" ).invoke(value)
59
59
60
60
if (unboxed == null ) {
61
- provider.findNullValueSerializer( null ).serialize( null , gen, provider )
61
+ provider.defaultSerializeNull( gen)
62
62
return
63
63
}
64
64
@@ -77,8 +77,8 @@ internal sealed class ValueClassSerializer<T : Any>(t: Class<T>) : StdSerializer
77
77
// As shown in the processing of the factory function, jsonValueGetter is always a static method.
78
78
val jsonValue: Any? = staticJsonValueGetter.invoke(null , unboxed)
79
79
jsonValue
80
- ?.let { provider.findValueSerializer (it:: class .java).serialize(it , gen, provider ) }
81
- ? : provider.findNullValueSerializer( null ).serialize( null , gen, provider )
80
+ ?.let { provider.defaultSerializeValue (it, gen) }
81
+ ? : provider.defaultSerializeNull( gen)
82
82
}
83
83
}
84
84
Original file line number Diff line number Diff line change 1
1
package com.fasterxml.jackson.module.kotlin.test.github
2
2
3
+ import com.fasterxml.jackson.annotation.JsonValue
3
4
import com.fasterxml.jackson.module.kotlin.defaultMapper
4
5
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
5
6
import com.fasterxml.jackson.module.kotlin.readValue
6
7
import kotlin.test.Test
7
8
8
9
class GitHub873 {
10
+ @JvmInline
11
+ value class Person (
12
+ val properties : Map <String , Any >,
13
+ )
14
+
15
+ data class TimestampedPerson (
16
+ val timestamp : Long ,
17
+ val person : Person ,
18
+ )
19
+
9
20
@Test
10
21
fun `should serialize value class` () {
11
22
@@ -35,12 +46,18 @@ class GitHub873 {
35
46
}
36
47
37
48
@JvmInline
38
- value class Person (
39
- val properties : Map <String , Any >,
40
- )
49
+ value class MapAsJsonValue (val value : String ) {
50
+ @get:JsonValue
51
+ val jsonValue get() = mapOf (" key" to value)
52
+ }
41
53
42
- data class TimestampedPerson (
43
- val timestamp : Long ,
44
- val person : Person ,
45
- )
54
+ data class JsonValueWrapper (val value : MapAsJsonValue )
55
+
56
+ @Test
57
+ fun `JsonValue is serialized in the same way` () {
58
+ val data = JsonValueWrapper (MapAsJsonValue (" value" ))
59
+ val json = defaultMapper.writeValueAsString(data)
60
+
61
+ assert (""" {"value":{"key":"value"}}""" == json)
62
+ }
46
63
}
You can’t perform that action at this time.
0 commit comments