Skip to content

Commit a8d3330

Browse files
authored
Merge pull request #40 from hotwired/json-serialization-update
JSON serializer configuration update
2 parents 1bd1409 + fec46a8 commit a8d3330

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

strada/src/main/kotlin/dev/hotwire/strada/JsonExtensions.kt

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.hotwire.strada
22

3+
import kotlinx.serialization.ExperimentalSerializationApi
34
import kotlinx.serialization.decodeFromString
45
import kotlinx.serialization.encodeToString
56
import kotlinx.serialization.json.Json
@@ -27,4 +28,10 @@ internal inline fun <reified T> String.decode(): T? = try {
2728
null
2829
}
2930

30-
private val json = Json { ignoreUnknownKeys = true }
31+
@OptIn(ExperimentalSerializationApi::class)
32+
private val json = Json {
33+
ignoreUnknownKeys = true
34+
encodeDefaults = true
35+
explicitNulls = false
36+
isLenient = true
37+
}

strada/src/main/kotlin/dev/hotwire/strada/StradaJsonConverter.kt

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package dev.hotwire.strada
22

3+
import kotlinx.serialization.ExperimentalSerializationApi
34
import kotlinx.serialization.decodeFromString
45
import kotlinx.serialization.encodeToString
56
import kotlinx.serialization.json.Json
6-
import java.lang.Exception
77

88
abstract class StradaJsonConverter {
99
companion object {
@@ -42,12 +42,18 @@ abstract class StradaJsonTypeConverter : StradaJsonConverter() {
4242
}
4343

4444
class KotlinXJsonConverter : StradaJsonConverter() {
45-
val json = Json { ignoreUnknownKeys = true }
45+
@OptIn(ExperimentalSerializationApi::class)
46+
val json = Json {
47+
ignoreUnknownKeys = true
48+
encodeDefaults = true
49+
explicitNulls = false
50+
isLenient = true
51+
}
4652

4753
inline fun <reified T> toObject(jsonData: String): T? {
4854
return try {
4955
json.decodeFromString(jsonData)
50-
} catch(e: Exception) {
56+
} catch (e: Exception) {
5157
logException(e)
5258
null
5359
}

0 commit comments

Comments
 (0)