在groovy中我得到了以下内容......
def response = [
modifications: []
]
我想动态地添加到这个地图,以便最终像这样....
def response = [
modifications: [
userKnown :[
type: 'Boolean',
value: userKnown?.toBoolean()
]
]
]
我尝试使用下面的代码来做到这一点......
if (userKnown){
def userKnownVariable = [
userKnown :[
type: 'Boolean',
value: userKnown?.toBoolean()
]
]
response.modifications << userKnownVariable
}
但我并没有完全理解我所追求的目标。有人可以帮我解决我做错的事。
感谢
答案 0 :(得分:2)
在给定的示例中,您正在混合两件事。当您使用modifications
时,地图中的List
类型为[]
,而您希望代之以Map
。要以这种方式实例化地图,您必须使用[:]
def response = [
modifications: [:]
]
def userKnown = [
userKnown: [
type: 'Boolean',
value: true
]
]
response.modifications << userKnown
assert response == [modifications: [userKnown: [type: 'Boolean', value: true]]]
有一点值得一提。考虑在您的示例中使用List
。在某些情况下,向地图添加新密钥可能听起来合理,尽管它有一个重要问题 - modifications
中每个密钥的顺序不确定,这取决于地图实现(HashMap
,{ {1}}等。从业务逻辑的角度来看,您似乎正在尝试获取有关已应用/添加的所有修改的信息。在这种情况下TreeMap
将是一个更好的选择 - 您可以跟踪每个修改的应用顺序,如果您在前端使用此响应 - 迭代列表并显示每个结果将更容易