I am not sure if there is something that fits your exact need, but it does not seem something so hard to implement.
function rec_flatten_dict(d, prefix_delim = ".")
new_d = empty(d)
for (key, value) in pairs(d)
if isa(value, Dict)
flattened_value = rec_flatten_dict(value, prefix_delim)
for (ikey, ivalue) in pairs(flattened_value)
new_d["$key.$ikey"] = ivalue
end
else
new_d[key] = value
end
end
return new_d
end
Creates some intermediary structs, so it is not a solution with the greatest performance, but it does the job.
julia> rec_flatten_dict(data)
Dict{String,Any} with 4 entries:
"name.last" => "Doe"
"name.nick" => nothing
"name.first" => "John"
"id" => 42