【问题标题】:How to custom indent json dump?如何自定义缩进 json 转储?
【发布时间】:2020-09-18 04:56:18
【问题描述】:

我使用缩进 = 2,但我希望第一级缩进为零。例如:

部分代码

json.dump(json_data, json_file, indent=2)

输出

{
  "a": 1,
  "b": "2",
  "list": [
    {
      "c": 3,
      "d": 4,
    }
  ]
}

我想要什么

{
"a": 1,
"b": "2",
"list": [
  {
    "c": 3,
    "d": 4,
  }
]
}

【问题讨论】:

  • 我真的很好奇你的用例是什么。
  • @yedpodtrzitko 我正在修改 JSON 用于游戏改装目的,它可以工作,但如果它匹配原生游戏 JSON 格式会更好
  • JSON 对空格不敏感。任何好的 JSON 解析器都应该忽略空格。
  • @DYZ 我已经知道了,我在之前的评论中指定它可以在游戏中使用,我只是想要缩进纯粹是为了美观。
  • json 模块不能做你想做的事。您必须编写自己的漂亮打印机。

标签: python json python-3.x dictionary


【解决方案1】:

正如 cmets 中所述,它不会产生功能上的差异,您将需要自定义漂亮打印。像

import json
import textwrap

spam = {"a": 1, "b": "2", 
        "list": [{"c": 3, "d": 4,}]}

eggs = json.dumps(spam, indent=2).splitlines()
eggs = '\n'.join([eggs[0], textwrap.dedent('\n'.join(eggs[1:-1])), eggs[-1]])
print(eggs)
with open('spam.json', 'w') as f:
    f.write(eggs)

输出

{
"a": 1,
"b": "2",
"list": [
  {
    "c": 3,
    "d": 4
  }
]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多