rtf*_*inc 7 grails groovy json
我正在编写一个Grails/Groovy应用程序,我有一个JSON对象,其中包含可以更改的params成员中的"字符串"名称(索引和小部件).也就是说,下次它可能是极致和缩放.这是JSON:
def jx = """{
"job": "42",
"params": {
"grommet": {"name": "x", "data": "y"},
"widget": { "name": "a", "data": "b"}
}
}"""
Run Code Online (Sandbox Code Playgroud)
我试图找出如何获得字符串索环.代码到目前为止:
def dalist = new JsonSlurper().parseText(jx)
println dalist.job // Gives: 42
println dalist.params // Gives: [grommet:[name:x, data:y], widget:[name:a, data:b]]
println dalist.params[0] // Gives: null
Run Code Online (Sandbox Code Playgroud)
知道如何获得字符串索环吗?Iama不停地撞在墙上.
的params
JSON对象上键与JSON对象,而不是阵列相关联,这样可以不通过索引来访问它.JsonSlurper将JSON对象映射到Groovy Maps,因此您可以params
通过其键来访问,这些键是字符串,例如dalist.params.grommet
,它将为您提供地图[name: 'x', data: 'y']
.
要访问params
您可以执行的键dalist.params.keySet()
,这将为您提供列表['grommet', 'widget']
.如果你对只知道params
密钥感兴趣,那应该可以解决问题.如果'grommet'
由于某种原因需要获取字符串,可以通过访问该列表中的第一个元素来实现,即dalist.params.keySet()[0]
,但我不知道您为什么要知道这一点.并且我不确定是否保证该映射的第一个键始终是'grommet'
,因为JSON对象是规范的无序(来自json.org:对象是一组无序的名称/值对),但是,反过来,Groovy映射是有序的(默认实现是LinkedHashMap)...所以我假设在解析JSON到Groovy世界时保留了顺序,但我尽量不依赖于那个特定的行为.