I have got a input string like "[key1:value1,key2:value2]", how to get the value by key?
Discussion posts and replies are publicly visible
Hi liangl7510
I have developed a solution that achieve this dynamically. Below is the code for your reference.
a!localVariables( local!input: "[key1:value1,key2:value2,key3:value3,key4:value4]", local!stripText: mid(local!input, 2, len(local!input) - 2), local!tempString: split(split(local!stripText, ","), ":"), local!dict: a!map(), local!updatedMaps: a!forEach( items: local!tempString, expression: if( mod(fv!index, 2) = 0, {}, a!update( local!dict, fv!item, index(local!tempString, fv!index + 1, null()) ) ) ), local!keys: a!flatten( a!forEach( items: local!updatedMaps, expression: a!keys(fv!item) ) ), a!update( a!map(), local!keys, a!forEach( items: local!updatedMaps, expression: index(fv!item, a!keys(fv!item), null) ) ))
expecting this might be CDT value processed! Instead of working on the value, try working on it at its original CDT form.
Where do you get this value from?
liangl7510 , you can use the below code to convert you input string to a valid list of Map type variable and thn by using simple index function you can get the values based on the keys.
a!localVariables( local!input: substitute( substitute( "[key1:value1,key2:value2,key3:value3,key4:value4]", "[", "" ), "]", "" ), local!arrayOfText: split(local!input, ","), local!finalMap: a!flatten( a!forEach( items: local!arrayOfText, expression: a!localVariables( local!temp: split(fv!item, ":"), { a!map(key: local!temp[1], Value: local!temp[2]) } ) ) ), index( local!finalMap.Value, wherecontains("key1", local!finalMap.key), "" ) )