拉丁的传说
这是一个 hack,它将所有内容转换为列表,然后将方括号更改为大括号。如果您的字符串可能包含方括号,那将是一个问题。import jsoninp = """{ "aaa": { "bbb": { "ccc": { "ddd": "string1", "eee": "string2" } }, "kkk": "string3" }}"""inp = json.loads(inp)def items(d): if isinstance(d, dict): return [(k, items(v)) for k, v in d.items()] return dinp = items(inp)print(json.dumps(inp, indent=2).replace("[", "{").replace("]", "}"))输出:{ { "aaa", { { "bbb", { { "ccc", { { "ddd", "string1" }, { "eee", "string2" } } } } }, { "kkk", "string3" } } }}
万千封印
请注意,当字典键不是有序键时,您将它们视为有序,因此我使用列表使其更加明确。如果是我,我一开始不会转储到 JSON,而是将原生 python 数据结构直接序列化为 C++ 初始化器列表语法:myobj = { "aaa": [ { "bbb": { "ccc": [ {"ddd": "string1"}, {"eee": "string2"} ] }}, { "kkk": "string3" } ]}def pyToCpp(value, key=None): if key: return '{{ "{}", {} }}'.format(key, pyToCpp(value)) if type(value) == dict: for k, v in value.items(): return pyToCpp(v, k) elif type(value) == list: l = [pyToCpp(v) for v in value] return '{{ {} }}'.format(", ".join(l)) else: return '"{}"'.format(value)y = pyToCpp(myobj)print(y)输出:{ "aaa", { { "bbb", { "ccc", { { "ddd", "string1" }, { "eee", "string2" } } } }, { "kkk", "string3" } } }在这里运行它:https ://repl.it/repls/OddFrontUsers