在Python中,如何通过删除括号和大括号来打印Json

yab*_*exu 2 python json dictionary

我想以一种很好的方式打印Json,我想摆脱括号,引号和括号,只使用缩进和行结尾来显示json的结构.

例如,如果我有这样的Json:

    {
        "A": {
            "A1": 1,
            "A2": 2
        },
        "B": {
            "B1": {
                "B11": {
                    "B111": 1,
                    "B112": 2
                },
                "B12": {
                    "B121": 1,
                    "B122": 2
                }
            },
            "B2": {
                "B21": [1,2],
                "B22": [1,2]
            }
        },
        "C": "CC"
    }
Run Code Online (Sandbox Code Playgroud)

如何通过删除{}和[]来打印json,我想要的是:

A:
  A1: 1
  A2: 2
B:
  B1:
     B11:
         B111: 1
         B112: 2
     B12:
         B121: 1
         B122: 2
  B2:
     B21: 1, 2
     B22: 1, 2
C: CC
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 5

您可以将json加载到python对象中,然后将python对象转换为YAML.另一种解决方案是简单地遍历字典并根据需要对其进行格式化.

这是将其转换为YAML的示例.它并没有准确地给你你想要的东西,但它非常接近.有很多方法可以自定义输出,这只是一个显示一般想法的快速黑客:

import json
import yaml

data = json.loads('''
   {
        "A": {
            "A1": 1,
            "A2": 2
        },
        "B": {
            "B1": {
                "B11": {
                    "B111": 1,
                    "B112": 2
                },
                "B12": {
                    "B121": 1,
                    "B122": 2
                }
            },
            "B2": {
                "B21": [1,2],
                "B22": [1,2]
            }
        },
        "C": "CC"
    }
''')

print yaml.safe_dump(data, allow_unicode=True, default_flow_style=False)
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

A:
  A1: 1
  A2: 2
B:
  B1:
    B11:
      B111: 1
      B112: 2
    B12:
      B121: 1
      B122: 2
  B2:
    B21:
    - 1
    - 2
    B22:
    - 1
    - 2
C: CC
Run Code Online (Sandbox Code Playgroud)