【问题标题】:how to convert all int to str in a nested dict with json.dumps()?如何使用 json.dumps() 将嵌套字典中的所有 int 转换为 str?
【发布时间】:2015-01-25 15:40:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python json dictionary


    【解决方案1】:

    假设在接收端您正在运行 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,如果指定,将使用字符串调用 每个要解码的 JSON int。默认情况下,这相当于 整数(num_str)。这可用于使用其他数据类型或解析器 对于 JSON 整数(例如浮点数)。

    【讨论】:

    • 完美,谢谢 - 这正是我想要的。我怀疑json 可能能够进行转换,让我失望的是(在您引用的文档中)“默认情况下,这相当于 int(num_str)。”。我认为它与我想做的相反,现在在理解(并在您的代码的帮助下)阅读之后,它就很清楚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2019-12-03
    • 2023-03-11
    • 2022-12-05
    • 2023-01-07
    相关资源
    最近更新 更多