我试图将Kotlin序列化(Kotlin 1.7.2,kotlinx.serialization 1.4.1)用于实现密封接口的值类:
@Serializable
sealed interface Power {
val value: Int
}
@Serializable
@JvmInline
value class PowerWatt(override val value: Int) : Power
@Serializable
@JvmInline
value class PowerHp(override val value: Int) : Power
当尝试序列化到Json时
我向一个API请求,响应是一个JSON对象,这个json对象包含一个字符串,它是另一个json对象。我试图使用kotlinx.serialization来处理这个对象的反序列化。
我可以自己重写反序列化功能,但是这类操作不符合使用这个库的目的。
我希望这样的事情能奏效。
@Serializable
data class Foo(val data: Data)
@Serializable
data class Data(val foo: String)
对于类似于以下对象的
{
"data":"{\"foo\":\"bar\"}
我正在尝试让定制序列化与kotlinx.serialization一起工作,就像这个简化的例子:
@Serializable
open class KdfParams {
var dklen: Int = 0
var salt: String? = null
@Serializer(forClass = KdfParams::class)
companion object {
override fun save(output: KOutput, obj: KdfParams) = TODO()
override fun loa
我对Kotlin非常陌生,但我已经在许多情况下成功地使用了Kotlin序列化--甚至对嵌套类、mutableLists等也是如此。然而,我很难处理二维数组。
我的班级:
import kotlinx.serialization.*
@Serializable
data class Thing(val name:String)
@Serializable
data class Array2D(val width:Int, val height:Int,
var arrayContents:Array<Array<Thing?>>
用kotlinx.serialization序列化泛型类在JVM中成功,但在JavaScript中使用消息TypeError: tmp$.serializer is not a function却失败。请参阅下面的单元测试。
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.encodeToString
import kotlin.test.Test
@Serializable
data class Serializatio
使用Android Studio中的kotlin插件1.3.10,当我试图将一个简单类的对象字符串化为JSON时,它无法编译:
此声明是实验性的,其用法必须标记为'@kotlinx.serialization.ImplicitReflectionSerializer‘或'@UseExperimental(kotlinx.serialization.ImplicitReflectionSerializer::class)’
@Serializable data class Data(val a: Int, val b: Int)
val data = Data(1, 2)
val
我读了不少关于图书馆的文章,但发现它们是如何工作的仍然是个谜。
我想使用Kotlin序列化库,但是在查看了我需要做的事情之后,在编译时仍然会出现错误。Json.encodeToString和Json.decodeToString显示出红色。
任何人都能指出我做错了什么。谢谢。(知道的太多了)
下面是我在梯度中所拥有的
在应用程序级别上我有
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlinx-serialization'
}
de
最近,我一直试图为多态类层次结构实现Kotlinx序列化。我使用了指南,但是我的例子有点复杂。我的班级结构如下:
@Serializable
open class Project(val name: String)
@Serializable
@SerialName("owned")
open class OwnedProject(val owner: String) : Project("kotlin")
@Serializable
@SerialName("owned_owned")
class OwnedOwnedProject(val
使用kotlinx.serialization时,这段代码将引发一个错误:println(Json.encodeToString(Path.of("value")))说kotlinx.serialization.SerializationException: Class 'WindowsPath' is not registered for polymorphic serialization in the scope of 'Path'.
WindowsPath是内部的,因此我不能将它注册为多态子类(就像在中那样),只使用Path本身,甚至用于P
我有一个泛型类class MyClass<T> : MyInterface<T>,我想将一个json反序列化为泛型类型T。我尝试使用杰克逊和kotlinx.serialization库来反序列化json,但是我得到了以下错误
cannot use T as reified type parameter. Use class instead。
我对发生这种情况的理解是因为Jackson和kotlinx反序列化函数都期望得到具体化的T,但是在我的类中,无法在编译时知道T的类型。我对这个错误的理解正确吗?有办法解决这个错误吗?
我的代码片段
class MyClass<
我有以下数据类
@Serializable
data class Income(val id: String,
val description: String,
val amount: Int,
val Time: Date,
val userId: String)
现在,当我尝试使用.serializer()函数时,它告诉我没有为收入类定义.serializer(),因此我的项目无法编译。
val response = Json.st
我试图在iOS上使用Kotlin多平台代码(使用Ktor和Kotlin )。框架是正确生成的,并且可以调用一些公开的类/方法,而不存在任何问题。但是,如果我尝试添加以下内容(例如,在中这样做)。我得到“未声明类型‘KotlinCoroutineContext的使用”(我在SharedCode.h中看到它不存在)
import Foundation
import UIKit
import SharedCode
public class CoroutineDispatcher: Kotlinx_coroutines_core_nativeCoroutineScope {
overrid
在反序列化过程之前,Ktor中是否有更改json的内容?在下面的示例中,有一个带有动态键的json,其中我需要删除“令牌”键,因为它是字符串类型,而不是对象类型作为其他键。当我修改代码时,我会得到以下错误:
Exception in thread "main" kotlinx.serialization.json.internal.JsonDecodingException: Expected class kotlinx.serialization.json.JsonObject as the serialized body of shell.remoting.Market,
我的数据是一种丰富的文本格式,存储为嵌套的JSON数组。文本标记存储描述格式的字符串和注释的明文。我希望在解码时将这些嵌套JSON数组的特定结构映射到丰富的Kotlin类层次结构中。
下面是描述这种文本编码的类型:
// Text string is an array of tokens
type Text = Array<TextToken>
// Each token is a Array[2] tuple. The first element is the plaintext.
// The second element is an array of annotations
我试图用代替Gson库来处理JSON序列化/反序列化。
我面临一些反序列化泛型对象的问题--我已经建立了一个简单的示例来说明我试图实现的目标:
@Serializable
data class ContentMessageDto<T>(
val method: String,
val content: T
)
@Serializable
private data class DummyObjectNonNullProperties(
val value: Int,
@SerialName("aaa") val someProp: S
我在Kotlin原生项目上使用kotlinx.serialization,我为我的模型定义了一个Super class,所有的模型都从它扩展而来。我定义了一个名为function的toJSON(),用于序列化模型中所有类模型中的变量和字段。
@Serializable
open class Model {
fun toJSON(): String = JSON.stringify(this);
}
我创建了一个子类
class Me : Model() {
var name:String = "Jack";
}
但是,当我调用JSON.stringify(this)时
所以,我有一个ActorModel类,它包括MovieModel的数组列表。我试图对它进行编码,并将其打包到下一个活动中。但是,它说:
kotlinx.serialization.json.internal.JsonDecodingException: Expected start of the object '{', but had 'EOF' instead at path: $
JSON input: kotlinx.serialization
这是我的ActorModel课程:
package com.sanjarbek.flixster2
impor
我想使用Kotlin多平台项目中的kotlinx.serialization来解码包含多态类结构中对象列表的json字符串,但是它只在JVM上工作,而不是在本机上工作。下面是一个最低可重现性的例子:
@Serializable
abstract class Project {
abstract val name: String
}
@Serializable
@SerialName("BasicProject")
data class BasicProject(override val name: String): Project()
@Serializable
@
我使用密封类来处理api响应。我正在尝试一些代码,但得到了一些序列化错误。我也尝试过这个,但它不起作用。你们能帮我解决这个问题吗。我是序列化领域的新手。
import kotlinx.serialization.Serializable
sealed class ApiResponse<out T : Any> {
data class Success<out T : Any>(
val data: T?
) : ApiResponse<T>()
data class Error(
val exc