George
03/11/2022, 6:17 PMpublic sealed interface SharedPayload {
public val data: JsonElement?
public val error: ApiError?
}
and an impl
@PublishedApi
@Serializable
internal class SharedSharedPayloadFromBuilder : SharedPayloadBuilder, SharedPayload {
@Transient
private var hasData = false
@Transient
private var hasErrors = false
@Polymorphic
override var data: JsonElement? = null
private set
override var error: ApiError? = null
private set
override fun data(value: JsonElement?) {
if (hasData) {
error("Data already provided")
}
data = value
hasData = true
}
override fun error(value: ApiError) {
if (hasErrors) {
error("Error already provided")
}
error = value
hasErrors = true
}
fun build(): SharedPayload {
check(hasData || hasErrors) { "Data or error is required" }
return this
}
}
Im serializing any object into data as jsonElement, then i want to serialize the whole object as a jsonElement, yet i got this err
Serializer for JsonPrimitive of kind STRING cannot be serialized polymorphically with class discriminator.
Anyone got any idea what im doing wrong?
The test i run is this:
@Test
fun test() {
val payload = buildSharedPayload {
data(ApiRequest("Hello from api request as json element"))
}
println(payload.data)
val jsonElement = payload.encodeToJson()
println(jsonElement)
val data = SharedPayload("Hello im json element")//.encodeToJson()
println(data.data)
}
fyi here is a sample project with this:
https://github.com/GeorgePap-719/simple-springboot-kotlinx-serialization
Thanks in advance for any help!Richard Gomez
03/15/2022, 12:15 PMGeorge
03/15/2022, 12:16 PMRichard Gomez
03/15/2022, 12:18 PMdata(ApiRequest("Hello from api request as json element"))
George
03/15/2022, 12:20 PMGeorge
03/15/2022, 12:22 PM