2

当我的端点的 JSON 响应"data"元素返回结果时,我成功地将所述结果解析为Map<String, MyCustomDataType>.

但是当我的端点的 JSON 响应的"data"元素返回空时,例如"data": [],我的反序列化会引发错误“行号无效 JSON:预期'{,种类:kotlinx.serialization.StructureKind$Map@6f12df1'”

在我使用 aList反序列化数据元素的不同端点中,我可以处理这个空数据数组结果而不会出错

@SerialName("data")
List<DataItem> = listOf(),

我现在如何使用地图类似地处理这个问题?这是我目前未成功尝试的:

@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
        )
    }
}

正确解析时的示例 JSON 响应:

"myDataClass": {
  "success": true,
  "data": {
    "39": {
      "updated": [
        {
          "myid": 1794
        }
      ]
    },
    "75": {
      "updated": [
        {
          "myid": 1794
        }
      ]
    }
  },
  "statusCode": 200
}

抛出错误时的示例 JSON:

{
  "myDataClass":{
    "success":true,
    "data":[],
    "statusCode":200
  }
}
4

0 回答 0