在Kotlin中从JSON获取textValue()

erhoui1w  于 2023-10-21  发布在  Kotlin
关注(0)|答案(1)|浏览(96)

我试图从下面显示的json输入中获取“reason”的textValue()

{
  "data": {
    "errors": {
      "array": [
        {
          "field": "recipientId",
          "reason": "Not Registered"
        }
      ]
    }
  }
}

到目前为止,我能用这个得到它

val jsonNode = objectMapper.readTree(input) 

val reason = jsonNode.get("data")?.get("errors")?.get("array")?.map { it }?.get(0)?.get("reason")?.textValue().orEmpty()

我想知道是否有更好的方法来获得价值

20jt8wwn

20jt8wwn1#

您也可以将JSON字符串写回Kotlin数据类。

data class Root(
   val data: Data,
)

data class Data(
    val errors: Errors,
)

data class Errors(
    val array: List<Array>,
)

data class Array(
    val field: String,
    val reason: String,
)

使用FasterXML/jackson-module-Kotlin的示例:

val objectMapper = ObjectMapper().registerKotlinModule()

objectMapper.registerModule()

val root: Root = objectMapper.readValue(json)

你可以很容易地生成你的数据类:
https://transform.tools/json-to-kotlin

相关问题