Skip to main content
July 22, 2024
Question

Cast/convert dictionary to array of variants

  • July 22, 2024
  • 5 replies
  • 1 view

{
    'a': true,
    'b': true,
    'c': false,
    'd': false
}

The code above should dynamically be converted to 

{
  { 'a': true },
  { 'b': true },
  { 'c': false },
  { 'd': false }
}

is that possible? Thanks in advance

5 replies

mikes0011
Brainy
July 22, 2024

What's your use case?

Depending on the particulars, I expect you could probably utilize a!keys() to get the keys from the original dictionary, then iterate over that list, creating a set of new dictionaries each containing just one property from the original.

July 22, 2024

Could you please give me an example how can I create a set of new dictionaries? I am trying with a!forEach

mikes0011
Brainy
July 22, 2024

I guess it takes a little trickery to get the plaintext key name to be the key in a new dictionary, but if we (for instance) use JSON as an intermediary step, that'll pretty much do it for us...

a!localVariables(
  local!originalDictionary: {
    'a': true,
    'b': true,
    'c': false,
    'd': false
  },
  
  local!keys: a!keys(local!originalDictionary),
  
  a!forEach(
    local!keys,
    
    /* note: double quotes have to be handled carefully here */
    a!fromJson(
      "{""" & fv!item & """:" & property(local!originalDictionary, fv!item) & "}"
    )
  )
)