json - 在 kotlin 中使用 Gson 序列化数据类中的密封类
问题描述
我为数据类Value
下的 json 字段创建了一个密封类。CustomAttribute
该字段可以返回String
或Array of Strings
。
我们如何从 json 反序列化这个密封类?
data class CustomAttribute (
val attributeCode: String,
val value: Value
)
sealed class Value {
class StringArrayValue(val value: List<String>) : Value()
class StringValue(val value: String) : Value()
}
解决方案
一种解决方案是RuntimeTypeAdapterFactory
按照此答案中的说明使用
val valueTypeAdapter = RuntimeTypeAdapter.of(Value::class.java)
.registerSubtype(StringArrayValue::class.java)
.registerSubtype(StringValue::class.java)
val gson = GsonBuilder().registerTypeAdapter(valueTypeAdapter).create()
RuntimeTypeAdapter
包含在 Gson 的源代码中,但不作为 Maven 工件公开。
推荐阅读
- html - 使用 Umbraco amd MVC 在 html 中登录失败时显示 div
- laravel - 如何获取从 Laravel 控制器中的复选框输入中获取的数组值?
- android - 如何在android Q中获取相邻单元格信息?
- c# - 如何映射两个不同的接口,以便一个接口值自动更改,另一个应该得到反映
- c++ - Oracle 即时客户端头文件丢失
- docker - 如何强制子域与 NGINX 完全匹配?
- c - 使用文本表进行类别线性转换的 Compu 方法
- r - R for 循环是数字
- plsqldeveloper - PL/SQL Developer 默认文件打开
- json - gunicorn 日志配置 access_log_format