When my endpoint's JSON response's "data"
element returns results, I am successfully parsing said results out into a Map<String, MyCustomDataType>
.
But when my endpoint's JSON response's "data"
element returns empty e.g. "data": []
,
my deserializing throws an error of "Invalid JSON at linenumber: Expected '{, kind: kotlinx.serialization.StructureKind$Map@6f12df1'"
In different endpoints where I use a List
to deserialize the data element I could handle this empty data array result without an error by doing
@SerialName("data")
List<DataItem> = listOf(),
How do I handle this similarly using a map now? This is what I am currently unsuccessfully trying:
@Serializable
data class MyDataClass(
@SerialName("success")
var success: Boolean = false,
@SerialName("data")
var `data`: Map<String, MyCustomDataType> = emptyMap(),
@SerialName("statusCode")
var statusCode: Int = 0
) {
@Serializable
data class MyCustomDataType(
@SerialName("updated")
var updated: List<Updated> = listOf(),
@SerialName("deleted")
var deleted: List<Deleted> = listOf()
) {
@Serializable
data class Updated(
@SerialName("myid")
var uid: Int? = 0
)
@Serializable
data class Deleted(
@SerialName("myId")
var uid: Int? = 0
)
}
}
Sample JSON Response when it parses correctly:
"myDataClass": {
"success": true,
"data": {
"39": {
"updated": [
{
"myid": 1794
}
]
},
"75": {
"updated": [
{
"myid": 1794
}
]
}
},
"statusCode": 200
}
Sample JSON when it throws an error:
{
"myDataClass":{
"success":true,
"data":[],
"statusCode":200
}
}