# Question: Is there a function to flatten a nested dictionary?

**URL:** <https://discourse.julialang.org/t/question-is-there-a-function-to-flatten-a-nested-dictionary/54462>\
**Category:** General Usage\
**Tags:** json, dictionary\
**Created:** [February 2, 2021, 2:09pm UTC](https://discourse.julialang.org/t/question-is-there-a-function-to-flatten-a-nested-dictionary/54462 "2021-02-02T14:09:11Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [February 2, 2021, 2:52pm UTC](https://discourse.julialang.org/t/question-is-there-a-function-to-flatten-a-nested-dictionary/54462/2 "2021-02-02T14:52:53Z")

</div>

I am not sure if there is something that fits your exact need, but it does not seem something so hard to implement.

```julia
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
julia> rec_flatten_dict(data)
Dict{String,Any} with 4 entries:
  "name.last" => "Doe"
  "name.nick" => nothing
  "name.first" => "John"
  "id" => 42

```

---

_[View the full topic](https://discourse.julialang.org/t/question-is-there-a-function-to-flatten-a-nested-dictionary/54462)._
