gpt4 book ai didi

kotlin - 将枚举序列化为整数值

转载 作者:行者123 更新时间:2023-12-02 13:40:42 26 4
gpt4 key购买 nike

我有以下枚举:

enum class Scopes(val value: Int) {
NODE(0),
API(1),
PROJECT(2),
GLOBAL_TO_OWNER(3),
PUBLIC_TO_ANYONE(4)
}

我想对此进行序列化,以便将枚举值(其序数)导出为整数而不是字符串。示例:

{"scope": 1}

我不想要的是:

{"scope": "1"}

如果这可以使用 Gson 完成,那是首选。如果没有,或许原生 Kotlin 方法可以做到。

最佳答案

serialize 的简单重写应该可以做到这一点

import com.google.gson.GsonBuilder
import com.google.gson.JsonElement
import com.google.gson.JsonObject
import com.google.gson.JsonSerializationContext
import com.google.gson.JsonSerializer
import java.lang.reflect.Type

enum class Scopes(val value: Int) : JsonSerializer<Scopes> {
NODE(0), API(1), PROJECT(2), GLOBAL_TO_OWNER(3), PUBLIC_TO_ANYONE(4);

override fun serialize(p0: Scopes?, p1: Type?, p2: JsonSerializationContext?): JsonElement =
JsonObject().apply { addProperty(p0?.name, p0?.value) }
}

fun main(args: Array<String>) {
val s = Scopes.NODE
val gson = GsonBuilder().registerTypeAdapter(Scopes::class.java, Scopes.API).create()
val jsonString = gson.toJson(s)
println(jsonString)
}

关于kotlin - 将枚举序列化为整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63739388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com