我正在尝试在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
的实例,还是需要手动序列化它们?
答案 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