在 KotlinJS 中将外部节点模块的 JSON return 序列化为 Kotlin class
Serializing external node module's JSON return into Kotlin class in KotlinJS
我正在尝试在 KotlinJS 中编写一个程序,将现有节点模块的 API 响应(通常作为 JSON 对象返回)转换为 Kotlin class 的实例有一组相似的字段。
Kotlin 中的外部节点模块如下所示:
@file:JsModule("someapi-client")
package ext.jspackage.someAPIClient
import kotlin.js.Promise
external class SomeAPIClient(apiKey: String) {
fun getAPIResponse(someParam: String): Promise<APIResponse>
}
我试图用以下 class 表示 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
的实例,还是我需要手动序列化它们?
目前无法自动反序列化外部调用。您可以将 API 用作 String
并使用 kotlinx.serialization.json.JSON::parse
或将其用作 dynamic
然后使用动态到 Kotlin 转换器:https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/runtime_usage.md#dynamic-object-parser-js-only
我正在尝试在 KotlinJS 中编写一个程序,将现有节点模块的 API 响应(通常作为 JSON 对象返回)转换为 Kotlin class 的实例有一组相似的字段。
Kotlin 中的外部节点模块如下所示:
@file:JsModule("someapi-client")
package ext.jspackage.someAPIClient
import kotlin.js.Promise
external class SomeAPIClient(apiKey: String) {
fun getAPIResponse(someParam: String): Promise<APIResponse>
}
我试图用以下 class 表示 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
的实例,还是我需要手动序列化它们?
目前无法自动反序列化外部调用。您可以将 API 用作 String
并使用 kotlinx.serialization.json.JSON::parse
或将其用作 dynamic
然后使用动态到 Kotlin 转换器:https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/runtime_usage.md#dynamic-object-parser-js-only