将外部节点模块的JSON序列化返回到KotlinJS中的Kotlin类

时间:2018-05-28 14:53:41

标签: json serialization kotlin kotlin-js

我正在尝试在KotlinJS中编写一个程序,该程序将现有节点模块的API响应(通常作为JSON对象返回)转换为具有类似字段集的Kotlin类的实例。

外部节点模块在Kotlin中如下所示:

@file:JsModule("someapi-client")
package ext.jspackage.someAPIClient

import kotlin.js.Promise

external class SomeAPIClient(apiKey: String) {
    fun getAPIResponse(someParam: String): Promise<APIResponse>
}

我试图用以下类表示JSON对象的模式:

package ext.jspackage.someAPIClient

import kotlinx.serialization.Serializable

@Serializable
data class APIResponse(val data: List<DataInResponse>, val start: Int, val end: Int, val timezone: String)

有没有办法让Kotlin自动将SomeAPIClient::getAPIResponse返回的JSON序列化为APIResponse的实例,还是需要手动序列化它们?

1 个答案:

答案 0 :(得分:3)

目前无法自动反序列化外部呼叫。您可以将API用作package com.company.project.component; import org.junit.Test; import static org.junit.Assert.assertEquals; public class SampleTest extends BaseUnitTest { @Test public void sampleTest() { assertEquals(1, 1); } } 并使用String或将其用作kotlinx.serialization.json.JSON::parse,然后使用dynamic-to-Kotlin转换器:https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/runtime_usage.md#dynamic-object-parser-js-only