это потому, что вы выгружаете каждый подкаталог, как если бы он был отдельными словарями.Поэтому он не записывает ни фигурные скобки, ни запятые.
Вместо этого не зацикливайтесь на поддиктах, а просто выводите весь список диктов (добавление параметра indent
позволяет "довольно распечатать"dump при необходимости):
with open("co.json", 'w') as fp:
json.dump(all_dict,fp,indent=2)
(вам сейчас не нужен режим добавления, просто откройте для записи / усечения) Обратите внимание, что вы не получите «dict» из dicts, кроме список диктов в результате: например, [ {a:b}, {c:d} ]
, что также верно для json.