Skip to content

Commit

Permalink
Configure JSON serializer to encode properties with default values, a…
Browse files Browse the repository at this point in the history
…nd make it more lenient
  • Loading branch information
Jirka Hutárek committed Aug 27, 2024
1 parent 1bd1409 commit fec46a8
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
9 changes: 8 additions & 1 deletion strada/src/main/kotlin/dev/hotwire/strada/JsonExtensions.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.hotwire.strada

import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
Expand Down Expand Up @@ -27,4 +28,10 @@ internal inline fun <reified T> String.decode(): T? = try {
null
}

private val json = Json { ignoreUnknownKeys = true }
@OptIn(ExperimentalSerializationApi::class)
private val json = Json {
ignoreUnknownKeys = true
encodeDefaults = true
explicitNulls = false
isLenient = true
}
12 changes: 9 additions & 3 deletions strada/src/main/kotlin/dev/hotwire/strada/StradaJsonConverter.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package dev.hotwire.strada

import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import java.lang.Exception

abstract class StradaJsonConverter {
companion object {
Expand Down Expand Up @@ -42,12 +42,18 @@ abstract class StradaJsonTypeConverter : StradaJsonConverter() {
}

class KotlinXJsonConverter : StradaJsonConverter() {
val json = Json { ignoreUnknownKeys = true }
@OptIn(ExperimentalSerializationApi::class)
val json = Json {
ignoreUnknownKeys = true
encodeDefaults = true
explicitNulls = false
isLenient = true
}

inline fun <reified T> toObject(jsonData: String): T? {
return try {
json.decodeFromString(jsonData)
} catch(e: Exception) {
} catch (e: Exception) {
logException(e)
null
}
Expand Down

0 comments on commit fec46a8

Please sign in to comment.