我正在编写一个Grails / Groovy应用程序,我在params成员内部有一个可以更改的“字符串”名称(索引和小部件)的
JSON对象.也就是说,下次它可能是极致和缩放.这是JSON:
def jx = """{ "job": "42","params": { "grommet": {"name": "x","data": "y"},"widget": { "name": "a","data": "b"} } }"""
我试图找出如何获得字符串索环.代码到目前为止:
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
知道如何获得字符串索环吗? Iama不停地撞在墙上.
解决方法
JSON对象上的params键与JSON对象关联,而不是与数组关联,因此您无法通过索引访问它. JsonSlurper将JSON对象映射到Groovy Maps,因此您可以通过其键来访问params,这些键是字符串,例如dalist.params.grommet,它会为你提供地图[name:’x’,data:’y’].
要访问参数上的键,您可以执行dalist.params.keySet(),它将为您提供列表[‘grommet’,’widget’].如果你只想知道params键,那应该可以解决问题.如果由于某种原因需要获取’grommet’字符串,可以通过访问该列表中的第一个元素来完成,即dalist.params.keySet()[0],但我不知道你为什么要这样做我知道.而且我不确定是否可以保证该映射的第一个键始终是’grommet’,因为JSON对象是规范的无序(从json.org:对象是一组无序的名称/值对),但是反过来,Groovy映射是有序的(默认实现是LinkedHashMap)…所以我会假设在将JSON解析为Groovy世界时保留了顺序,但我尽量不依赖于特定的行为.