gpt4 book ai didi

json - 如何从JSON字符串获取特定值

转载 作者:行者123 更新时间:2023-12-02 15:49:44 25 4
gpt4 key购买 nike

我有一个如下的JSON字符串:

{
"VCAP_SERVICES": {
"amazon-s3": [
{
"credentials": {
"accesskey": "somevalue",
"bucketname": "somevalue1"
}
"name": "foo"
},
{
"credentials": {
"accesskey": "someothervalue",
"bucketname": "someothervalue1"
}
"name": "bar"
}
]
}
}

我解析如下:
import org.codehaus.groovy.grails.web.json.JSONObject
import grails.converters.JSON
JSONObject myJson = JSON.parse(myString)

我想将 accesskeybucketnamefoobar的值放在不同的变量中
def foo_accesskey = null
def foo_bucketname = null
def bar_accesskey = null
def bar_bucketname = null

我尝试了以下似乎无效的方法:
myJson["amazon-s3"].each {id, data -> 
if (id == "foo") {
foo_accesskey = myJson["amazon-s3"]["credentials"]["accesskey"]
foo_bucketname = myJson["amazon-s3"]["credentials"]["bucketname"]
}
else if (id == "bar") {
bar_accesskey = myJson["amazon-s3"]["credentials"]["accesskey"]
bar_bucketname = myJson["amazon-s3"]["credentials"]["bucketname"]
}
}

最佳答案

您的json字符串不正确,您需要在凭据和名称之间使用逗号。
GroovyConsole的使用显示了如何解决您的元素。

def jsonStr = '{"VCAP_SERVICES": {"amazon-s3": [{"credentials": {"accesskey": "somevalue","bucketname": "somevalue1"},"name": "foo"},{"credentials": {"accesskey": "someothervalue","bucketname": "someothervalue1"},"name": "bar"}]}}'

def json = grails.converters.JSON.parse(jsonStr)
println json.toString()
println "-----"
def foo_ac
def foo_bu
def bar_ac
def bar_bu
json.VCAP_SERVICES."amazon-s3".each {
println "it: ${it}"
println "-----"
if (it.name == 'foo') {
foo_ac = it.credentials.accesskey
foo_bu = it.credentials.bucketname
}
if (it.name == 'bar') {
bar_ac = it.credentials.accesskey
bar_bu = it.credentials.bucketname
}
}
println "foo_ac: ${foo_ac}"
println "foo bu: ${foo_bu}"
println "bar ac: ${bar_ac}"
println "bar bu: ${bar_bu}"

关于json - 如何从JSON字符串获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com