Groovy中是否有类似的符号,就像在JavaScript中一样:
{
"name": "Jason Closure"
"characteristics": {
"height": ...,
"weight": ...,
...
}
}
你可以在这里引用一个对象键:
def content = new JsonSlurper().parseText(json)
def char_key = // char_key can be 'height', 'weight',...
content.characteristics[char_key]
答案 0 :(得分:2)
是的,您可以使用类似数组的表示法访问JSON节点,例如
import groovy.json.JsonSlurper
def json = '''{
"name": "Jason Closure",
"characteristics": {
"height": 10,
"weight": 20,
}
}'''
def root = new JsonSlurper().parseText(json)
def key = 'height'
assert root.characteristics[key] == 10
您还可以使用插值的GString获取节点值,例如
assert root.characteristics."$key" == 10
答案 1 :(得分:0)
我的要求是当键也是动态键时,如何从json字符串中获取值,以下是相同的代码段, locator 是中的动态键jsonText 。如果jsonText是 {“ name”:“ vijay”,“ address”:{“ country”:“ IN”,“ state”:“ Telangana”,“ city”:“ hyderabad”}} ,那么 locator 可以是“ name” 或“ address.state” 或“ address.city” 。请让我知道是否需要更多说明。
def getJsonProperty(String jsonText,String locator){
def slurper = new JsonSlurper()
def result = slurper.parseText(jsonText)
println("responseObject:"+result)
Binding binding = new Binding();
binding.setVariable("result", result);
GroovyShell shell = new GroovyShell(binding)
return shell.evaluate("result."+locator)
}