【问题标题】:Formatting JSON File Python格式化 JSON 文件 Python
【发布时间】:2022-01-14 23:22:32
【问题描述】:

我正在使用下面的代码将字典转储到 JSON 文件。

    for i in result_set:
                d = collections.OrderedDict()
                d["id"]=i["id"]#id
                d["name"]=i["name"]#name
                json_data.append(d)
        result_json=json.dumps(json_data,indent=None)
        return result_json

文件的输出如下

[{"id": "A", "name": "A Only"}, {"id": "B", "name": "B Only"} ]

我怎样才能得到如下格式的输出..

[{"id":"A","name":"A Only"},
{"id":"A","name":"B Only"}]

我尝试了不同的缩进值,包括无、负整数和正整数,但它似乎不起作用..

有什么想法吗??

【问题讨论】:

  • 我做了,它只会将 \n 附加到像“B Only\n”}这样的值}

标签: python json


【解决方案1】:

又快又脏:将 json 加载到字符串 (x) 中并执行以下操作:

x = '[{"id": "A", "name": "A Only"}, {"id": "B", "name": "B Only"} ]'
x = '},\n'.join(x.split('},'))
print(x)

【讨论】:

  • 这不会在嵌套字典的情况下给出预期的结果。前任。 [{"id": "A", "names": {"a": "b}, {"c": "d"}}]
  • @rv.kvetch 没错,这就是为什么我称它为快速而肮脏的解决方案。它适用于提供的示例
  • 你也可以用replace代替splitjoin:x.replace('},', '},\n')
【解决方案2】:

如果您希望始终将列表格式化为 JSON,并且希望控制输出在特定位置有换行符,您可能需要在单独的行上调用 json.dumps,如下所示:

lines = (json.dumps(line) for line in json_data)
joined = ',\n'.join(lines)
result_json = f"[{joined}]"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多