Whenever I'm building a JSON document, I revert to the old %s syntax just because it's more tidy than an f-string.
json_doc = '''{}''' % some_dictionary
and then populate json_doc via %(some_dictionary_key)s values inside of the brackets.
I find it more readable.
Furthermore, json_doc can now live elsewhere, if sizeable, and get imported.
I guess that template strings may be the newer way to do this, but this is very backward compatible.