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

WoJ*_*WoJ 3 python json dictionary

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

我最终(在“其他地方”)需要将这些整数用作字符串。因此我可以进行转换

  • 上游(构建字典时)
  • 或在接收方(“其他地方”)。

无论解决方案如何,str()代码中都会有很多。我正在寻找一种更简洁的方法来将所有内容转换intstr特定情况下的内容。

一种想法是在 dict构建后递归解析它,就在 之前json.dumps(),并在那里进行转换。不过,我想知道,在转储 JSON 时是否没有办法处理这个问题?可能使用json.JSONEncoder吗?(坦率地说,我不太明白)

unu*_*tbu 5

假设在接收端您正在运行 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))
Run Code Online (Sandbox Code Playgroud)

产量

{u'foo': '1', u'bar': ['2', '3']}
Run Code Online (Sandbox Code Playgroud)

根据文档

parse_int,如果指定,将使用要解码的每个 JSON int 的字符串调用。默认情况下,这等效于 int(num_str)。这可用于为 JSON 整数(例如浮点数)使用另一种数据类型或解析器。