GSP中的Grails access map变量,值周围有额外的括号

GSP中的Grails access map变量,值周围有额外的括号,grails,groovy,Grails,Groovy,我在我的服务中创建了一个映射,它是从我的控制器调用的。我把这张地图交给普惠制。我需要将id存储到一个隐藏的变量中,但id以myId的形式出现= [[20]] 为了生成唯一的名称和id,我需要将其与另一个字符串连接起来。因此,我只需要数字20。下面是服务返回到groupRef的内容 [[{myId=20, groups=[{groupId=33, gNames=[{name=Prime, show=true}]}]}]] <g:set var="myId" value="${groupR

我在我的服务中创建了一个映射,它是从我的控制器调用的。我把这张地图交给普惠制。我需要将id存储到一个隐藏的变量中,但id以myId的形式出现=

[[20]]
为了生成唯一的名称和id,我需要将其与另一个字符串连接起来。因此,我只需要数字20。下面是服务返回到groupRef的内容

[[{myId=20, groups=[{groupId=33, gNames=[{name=Prime, show=true}]}]}]]

<g:set var="myId" value="${groupRef.myId}" />
[{myId=20,groups=[{groupId=33,gNames=[{name=Prime,show=true}]]
产生[[20]]


我怎样才能得到这个数字呢?

从外观上看,你有一个列表,在一个列表中,在一个列表中,有多少个级别就有多少个[]括号对。试试这个:

<g:set var="myIdInside" value="myId[0][0]" />


并且,检查您的服务,看看您是否可以修改它返回的内容,以否定必须执行我刚才向您展示的操作。

在我看来,这就像是地图列表的
toString
表示,因此您的
myId
变量最终将作为数字列表(或字符串-
toString
表示法不区分整数
20
、长
20L
和字符串
“20”
)如果确实是这样,那么您可以尝试类似于
groupRef.myId.flatte()的方法
,但更有效的方法可能是查看服务代码,找出为什么要将结果包装在两层列表中……好吧,为什么首先要有一个列表列表?