我有一张包含值列表的地图。我需要使用该值的编码/加密版本更新所述列表中的每个值。
地图和列表可以嵌套在任何地方,我只是给出了要改变的路径。例如myMap.myList.*myObject
我的列表地图如下所示:
mymap {"myList" : [{myObject : "aaa" }, {myObject : "bbb"}]}
我得到了这条道路:'myList*myObj'
尝试更新值的代码:
myMap = [myList : [[myObject : "aaa"], [myObject : "bbb"]]];
path = 'myList*.myObject';
result = Eval.x(myMap, 'x.' + path + '="somenewvalue"');
这可以使用' somenewvalue'取代所有值。但是,我需要将每个值替换为其原始值的加密版本。所以' aaa'使用加密版本的' aaa'和' bbb'使用加密版本的' bbb'等等。
但是这会将所有值设置为相同的值。如何将值设置为不同的值?
答案 0 :(得分:1)
def myMap = ["myList" : [[myObject : "aaa" ], [myObject : "bbb"]]]
def theList = myMap["myList"].collect { [myObject: it.myObject.toUpperCase()]}
myMap["myList"] = theList
println myMap
这可以创建一个全部大写的版本 - 所以如果你有加密(blah)功能,你可以这样做:
def myMap = ["myList" : [[myObject : "aaa" ], [myObject : "bbb"]]]
def theList = myMap["myList"].collect { [myObject: encrypt(it.myObject)]}
myMap["myList"] = theList
我确信它可以清理