如何从myRecord<String>类型的failedRecord中提取choice_value并判断是否为OUT
解决方案
你的failedRecord.record是JSON格式的字符串,并非可直接访问属性的对象,因此需要先解析JSON,再提取choice_value字段进行判断。以下是几种常用实现方式:
方式1:用Gson快速解析(轻量常用)
- 先确保项目引入Gson依赖(Gradle示例):
implementation 'com.google.code.gson:gson:2.10.1'
- 编写判断逻辑:
import com.google.gson.JsonParser val failedRecord: myRecord<String> = // 你的实例对象 // 解析JSON字符串为JsonObject val jsonObj = JsonParser.parseString(failedRecord.record).asJsonObject // 提取choice_value并做非空判断后比较 val isChoiceOut = jsonObj.get("choice_value")?.asString == "OUT" if (isChoiceOut) { // 执行后续业务逻辑 }
方式2:用Jackson解析(适合Spring生态项目)
如果项目已使用Jackson,可直接用:
import com.fasterxml.jackson.databind.ObjectMapper val objectMapper = ObjectMapper() val jsonNode = objectMapper.readTree(failedRecord.record) val isChoiceOut = jsonNode.get("choice_value")?.asText() == "OUT" if (isChoiceOut) { // 执行后续业务逻辑 }
方式3:自定义数据类(类型安全推荐)
若该JSON结构固定,建议定义对应数据类,避免硬编码字段名:
import com.google.gson.Gson // 定义与record结构匹配的数据类 data class UserRecord( val email: String, val source: String, val sub_source: String, val choice_value: String, val create_date: String, val is_undeliverable: Boolean ) // 解析并判断 val gson = Gson() val recordData = gson.fromJson(failedRecord.record, UserRecord::class.java) if (recordData.choice_value == "OUT") { // 执行后续业务逻辑 }
内容的提问来源于stack exchange,提问作者AnthonyEdwardsStan
相关产品推荐
相关产品推荐

