繁体   English   中英

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

[英]How to get a specific value from a JSON string

我有一个如下的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)

我想将foobar accesskeybucketname值放在不同的变量中

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}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM