提问人:Eduardo Rafael Moraes 提问时间:3/9/2023 更新时间:3/10/2023 访问量:598
像 hasmap 一样将 json 对象解析为 kotlin 数据类列表
Parse json object to kotlin data class list like an hasmap
问:
我有一个很难将一个jsonObject解析为数据类对象,我需要这个对象的一个列表:
data class DataClassExample(val mandatory: Boolean,
val name: String,
val regex: String?,
val regex_check: Boolean)
我有这个json对象,其中我需要在数据类对象的一个列表中转换每个列表对象:
{
"defaultParameters": [
{
"name": "business",
"mandatory": true,
"type": "String",
"regex": "",
"regex_check": true
},
{
"name": "environment",
"mandatory": true,
"type": "String",
"regex": "",
"regex_check": true
}
],
"userParameters": [
{
"name": "person_id",
"mandatory": true,
"type": "String",
"regex": "",
"regex_check": true
} ]
我将按 objectName 进行过滤,例如“defaultParameters”,并转换数据类中的列表,我的预期结果是:
listOf(DataClassExample(name = "", mandatory = true, type = "String", regex = "", ...), DataClassExample(...))
我尝试使用以下代码获取此值:
val response = allowList.filterKeys {
it == "defaultParameters"
} as MutableMap<String, String>
但我现在不知道如何在数据类列表中转换此代码。 Tks的
答:
-1赞
gioravered
3/9/2023
#1
我可以推荐一个名为 Klaxon 的第三方库
导入它,并将其添加到您的 Gradle 文件中:
dependencies {
implementation 'com.beust:klaxon:5.5'
...
}
如果您的列表是:
val data = """[
{
"name": "business",
"mandatory": true,
"type": "String",
"regex": "",
"regex_check": true
},
{
"name": "environment",
"mandatory": true,
"type": "String",
"regex": "",
"regex_check": true
}
]"""
解析行为:
Klaxon().parseArray<DataClassExample>(data)
0赞
chrsblck
3/10/2023
#2
您可能希望引入序列化库,例如 Kotlin 序列化
目前尚不清楚您是否只尝试序列化/反序列化 json 的子集,如果是这样,您需要先解析它。
下面是一个反序列化整个 .data
我们将使用 Serializable 注解。
让我们创建一个来保存默认参数和用户参数:data class
@Serializable
data class AllParameters(
val defaultParameters: List<Parameters>,
val userParameters: List<Parameters>
)
@Serializable
data class Parameters(
val mandatory: Boolean,
val name: String,
val type: String,
val regex: String?,
@SerialName("regex_check")
val regexCheck: Boolean
)
并反序列化为对象:
val obj = Json.decodeFromString<AllParameters>(data)
评论