我有一个输入,整数。我用它们(作为价值观)构建了一个dict然后将其转储到json,以便在其他地方重用。
我最终(在“别处”)需要使用这些整数作为字符串因此我可以做转换
上游(构建dict时)
或在接受方(“其他地方”)。
无论解决方案如何,代码中都会有大量的str()
。
我正在寻找一种更干净的方法,在这种特定情况下将所有的int
转换为str
。
一个想法是一旦它被构建,就在json.dumps()
之前,在那里进行转换。
不过,我想知道,在转储JSON时是否没有办法处理这个问题可能有recursively parse the dict?(坦率地说,我不太明白)
最佳答案
假设在接收端运行python,可以在加载json时使用parse_int
参数将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
如果指定,将使用字符串调用要解码的每个json int。默认情况下,这相当于
内景(num_str)这可以用于使用另一个数据类型或解析器
对于JSON整数(例如float)。