Skip to main content
December 27, 2024
Question

How to handle "[key1:value1,key2:value2]"

  • December 27, 2024
  • 5 replies
  • 0 views

I have got a input string like "[key1:value1,key2:value2]", how to get the value by key?

    5 replies

    December 27, 2024

    Hi [mention:25710eb09098448cbe7f3570455ba814:e9ed411860ed4f2ba0265705b8793d05] 

    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)
    )
    )
    )

    December 27, 2024

    expecting this might be CDT value processed! Instead of working on the value, try working on it at its original CDT form.

    stefanhelzle0001
    December 27, 2024

    Where do you get this value from?

    kalpeshg0081
    December 31, 2024

    [mention:25710eb09098448cbe7f3570455ba814:e9ed411860ed4f2ba0265705b8793d05] , 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),
        ""
      )
    )

    January 8, 2025

    If you can be sure that values won't have special character "]", you can use below code to get values.