如何使用 json.dumps() 将嵌套字典中的所有 int 转换为 str?

how to convert all int to str in a nested dict with json.dumps()?

我有一个输入,整数。我用它们(作为值)构建了一个字典。然后我将它转储到 JSON,以便在其他地方重复使用。

我最终(在 "elsewhere")需要将这些整数用作字符串。因此我可以进行转换

无论解决方案如何,代码中都会有大量 str()。 在这种情况下,我正在寻找一种更简洁的方法将所有 int 转换为 str

一个想法是 recursively parse the dict 一旦构建,就在 json.dumps() 之前,然后在那里进行转换。 不过,我想知道在转储 JSON 时是否没有办法处理这个问题?可能与 json.JSONEncoder? (坦率地说,我不太了解)

假设在接收端您是 运行 Python,您可以在加载 JSON 时使用 parse_int 参数将整数转换为字符串:

import json

test = {'foo':1, 'bar':[2,3]}
json_str = json.dumps(test)
print(json.loads(json_str, parse_int=str))

产量

{u'foo': '1', u'bar': ['2', '3']}

Per the docs:

parse_int, if specified, will be called with the string of every JSON int to be decoded. By default this is equivalent to int(num_str). This can be used to use another datatype or parser for JSON integers (e.g. float).