在 JSON 输出中,强制每个左花括号出现在一个新的单独行中

goo*_*ion 3 python json python-2.7

随着json.dumps(some_dict,indent=4,sort_keys=True)在我的代码:

我得到这样的东西:

{
    "a": {
        "x":1,
        "y":2
    },
    "b": {
        "z":3,
        "w":4
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想要这样的东西:

{
    "a":
    {
        "x":1,
        "y":2
    },
    "b":
    {
        "z":3,
        "w":4
    }
}
Run Code Online (Sandbox Code Playgroud)

如何强制每个左花括号出现在新的单独行的开头?

我是否必须编写自己的 JSON 序列化程序,或者是否有可以在调用时使用的特殊参数json.dumps

Bar*_*mar 5

您可以对结果使用正则表达式替换。

better_json = re.sub(r'^((\s*)".*?":)\s*([\[{])', r'\1\n\2\3', json, flags=re.MULTILINE)
Run Code Online (Sandbox Code Playgroud)

第一捕获组匹配一切到:属性名称之后,第二捕获组空白属性名之前相匹配,以及第三捕获组捕获的{[物体或阵列之前。然后在换行符之后复制空格,以便缩进正确匹配。

演示