首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析包含对象的API数据(Klaxon) (Kotlin)

解析包含对象的API数据(Klaxon) (Kotlin)
EN

Stack Overflow用户
提问于 2019-11-24 20:13:37
回答 1查看 301关注 0票数 0

我有API响应,其中包含对象(图形)

代码语言:javascript
复制
[
    {
        "code": 200,
        "status": "OK",
        "FirstDay": "2019-11-18",
        "LastDay": "2019-11-24",
        "graphic": {
            "2019-11-23": [
                {
                    "godzinaStart": "08:30",
                    "godzinaStop": "10:00",
                    "przedmiot": "Matematyka dyskretna",
                    "sala": "32AK8",
                    "nauczyciel": "xxx",
                    "grupy": "1K131; 1K132; 1K133; 1K134; 1K135; 2K131",
                    "typ": "wykład"
                },
            ],
            "2019-11-24": [
                {
                    "godzinaStart": "08:30",
                    "godzinaStop": "10:00",
                    "przedmiot": "Podstawy informatyki",
                    "sala": "308K",
                    "nauczyciel": "xxx",
                    "grupy": "1K131",
                    "typ": "laboratorium"
                },
            ]
        }
    }
]

我必须将这个JSON解析为Kotlin中的对象。所以我用参数做了课

代码语言:javascript
复制
class GraphicAPIResponse(
    var code: Int,
    var status: String,
    var errorMessage: String = "",
    var FirstDay: String = "",
    var LastDay: String = "",
    var graphic: JsonObject? = null OR var graphic: JsonArray<Any>? = null (I tried both)
)

我用这个函数来解析数据

代码语言:javascript
复制
val responeAPI = Klaxon().parseArray<GraphicAPIResponse>(response)

图形为JsonObiect类型时,应用程序抛出错误

代码语言:javascript
复制
I/System.out: ERROR -> Unable to instantiate JsonObject with parameters []

当图形是JsonArray<Any>类型时,下面是错误

代码语言:javascript
复制
I/System.out: ERROR -> Unable to instantiate GraphicAPIResponse with parameters [LastDay: 2019-11-24, code: 200, status: OK, graphic: java.lang.Object@aef265a, FirstDay: 2019-11-18]

我正试着从两个小时内解决这个问题。有人能帮帮我吗?

@编辑

谢谢你阿列克西·罗曼诺夫

那有帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 08:08:18

为嵌套对象定义类型:

代码语言:javascript
复制
class Lesson(val godzinaStart: String, val godzinaStop: String, ...)

并在GraphicAPIResponse中使用

代码语言:javascript
复制
class GraphicAPIResponse(
    var code: Int,
    var status: String,
    var errorMessage: String = "",
    var FirstDay: String = "",
    var LastDay: String = "",
    var graphic: Map<String, Lesson> = mapOf()
)

(老实说,我希望JsonObject也能工作)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59021918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档