使用 gson gradle 从 JSON 读取键和值

Read key and value from JSON using gson gradle

我正在尝试从 JSON 字符串中读取键和值。我也不知道密钥,因此无法根据密钥检索值。我将不得不分别读取键和值。

JsonObject jsonObject = new JsonParser().parse(vaultJson).getAsJsonObject()
vaultData = jsonObject.get("data").asJsonObject


println "########################"
println "vault data as json object"
println vaultData //{"key1":"key1_val1","key2":"key2_val2"}
println "########################"
for(Object data : vaultData.entrySet()){
    println data
    println "in for loop"

    //I m looking for something like, data.getKey and data.getValue
}

//OUTPUT of for loop

key1="key1_val1"
in for loop
key2="key2_val2"
in for loop

Sample JSON

{"request_id":"7d64a2b3-ac8b-9acf-e219-4686e8577fda","lease_id":"","renewable":false,"lease_duration":2764800,"data":{"key1":"key1_val1","key2":"key2_val2"},"wrap_info":null,"warnings":null,"auth":null}

如何在不同的字符串中读取 key1key1_val1?在我使用拆分字符串方法之前,我想检查一下 gson 中是否有一个可以发挥神奇作用的内置函数。

这就是我找到分离键和值的方法的方法。

for(Map.Entry<String,JsonObject> data : vaultData.entrySet()){
    println "Key : " + data.key
    String value = data.value.toString()
    println "Value : " + value.replaceAll('^\"|\"$', "")
}

为什么不简单:

import groovy.json.*

Map json = new JsonSlurper().parseText('{"request_id":"7d64a2b3-ac8b-9acf-e219-4686e8577fda","lease_id":"","renewable":false,"lease_duration":2764800,"data":{"key1":"key1_val1","key2":"key2_val2"},"wrap_info":null,"warnings":null,"auth":null}')

json.each{ key, val ->
  println "$key -> $val"
}

打印

request_id -> 7d64a2b3-ac8b-9acf-e219-4686e8577fda
lease_id -> 
renewable -> false
lease_duration -> 2764800
data -> [key1:key1_val1, key2:key2_val2]
wrap_info -> null
warnings -> null
auth -> null