Skip to content

Commit 6fcc6d5

Browse files
committed
handle nullable types
1 parent 270a82f commit 6fcc6d5

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/main/kotlin/com/github/jsonj/JsonJExtensions.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,29 +86,29 @@ fun <T : Any> JsonObject.construct(clazz: KClass<T>): T {
8686
val nonNullableType = it.type.withNullability(false)
8787
if (nonNullableType.isSubtypeOf(Int::class.starProjectedType)) {
8888
paramz.put(it, flexGet(name)?.asInt())
89-
} else if (nonNullableType.isSubtypeOf(Long::class.starProjectedType)) {
89+
} else if (nonNullableType.isSubtypeOf(Long::class.starProjectedType.withNullability(true))) {
9090
paramz.put(it, flexGet(name)?.asLong())
91-
} else if (nonNullableType.isSubtypeOf(Float::class.starProjectedType)) {
91+
} else if (nonNullableType.isSubtypeOf(Float::class.starProjectedType.withNullability(true))) {
9292
paramz.put(it, flexGet(name)?.asFloat())
93-
} else if (nonNullableType.isSubtypeOf(Double::class.starProjectedType)) {
93+
} else if (nonNullableType.isSubtypeOf(Double::class.starProjectedType.withNullability(true))) {
9494
paramz.put(it, flexGet(name)?.asDouble())
95-
} else if (nonNullableType.isSubtypeOf(BigInteger::class.starProjectedType)) {
95+
} else if (nonNullableType.isSubtypeOf(BigInteger::class.starProjectedType.withNullability(true))) {
9696
paramz.put(it, flexGet(name)?.asNumber())
97-
} else if (nonNullableType.isSubtypeOf(BigDecimal::class.starProjectedType)) {
97+
} else if (nonNullableType.isSubtypeOf(BigDecimal::class.starProjectedType.withNullability(true))) {
9898
paramz.put(it, flexGet(name)?.asNumber())
99-
} else if (nonNullableType.isSubtypeOf(Long::class.starProjectedType)) {
99+
} else if (nonNullableType.isSubtypeOf(Long::class.starProjectedType.withNullability(true))) {
100100
paramz.put(it, flexGet(name)?.asLong())
101-
} else if (nonNullableType.isSubtypeOf(String::class.starProjectedType)) {
101+
} else if (nonNullableType.isSubtypeOf(String::class.starProjectedType.withNullability(true))) {
102102
paramz.put(it, flexGet(name)?.asString())
103-
} else if (nonNullableType.isSubtypeOf(Boolean::class.starProjectedType)) {
103+
} else if (nonNullableType.isSubtypeOf(Boolean::class.starProjectedType.withNullability(true))) {
104104
paramz.put(it, flexGet(name)?.asBoolean())
105-
} else if (nonNullableType.isSubtypeOf(Enum::class.starProjectedType)) {
105+
} else if (nonNullableType.isSubtypeOf(Enum::class.starProjectedType.withNullability(true))) {
106106
val enumName = flexGet(name)?.asString()
107107
if (enumName != null) {
108108
@Suppress("UNCHECKED_CAST") // we already checked but too hard for Kotlin to figure out
109109
paramz.put(it, enumVal(it.type.jvmErasure as KClass<Enum<*>>, enumName))
110110
}
111-
} else if (nonNullableType.isSubtypeOf(JsonElement::class.starProjectedType)) {
111+
} else if (nonNullableType.isSubtypeOf(JsonElement::class.starProjectedType.withNullability(true))) {
112112
paramz.put(it, flexGet(name))
113113
} else {
114114
paramz.put(it, flexGet(name)?.asObject()?.construct(it.type.jvmErasure))

0 commit comments

Comments
 (0)