How can I quickly flatten a JSON dictionary?

A very niche use case but I had a use case once for flattening a JSON object such that it went from this

{
  "source": {
    "service": "blah"
  }
}

into this

{
  "source.service": "blah"
}

In this case, the latter was easy to parse dynamically because it means the file would always have a depth of 1 instead of a possibly infinite depth to recurse through.

Anyway, this was thankfully easier than I expected using a Python library called FlatDict

Here’s an example of how to use it:

import flatdict

d = flatdict.FlatDict(expect, delimiter='.')

How easy was that?

I haven’t checked if the FlatDict type is serialisable as JSON but if not, you can just convert back to a dictionary using dict(d).

A fuller example can be found in the form of this Github Gist.