python中的json(Python方式)

gpnt7bae  于 2023-03-13  发布在  Python
关注(0)|答案(7)|浏览(164)

我知道pprint python标准库是用来打印python数据类型的,但是,我总是在检索json数据,我想知道是否有简单快捷的方法来打印json数据?
无精美印刷:

import requests
r = requests.get('http://server.com/api/2/....')
r.json()

带有精美印刷:

>>> import requests
>>> from pprint import pprint
>>> r = requests.get('http://server.com/api/2/....')
>>> pprint(r.json())
ni65a41a

ni65a41a1#

Python内置的JSON module可以帮你处理这个问题:

>>> import json
>>> a = {'hello': 'world', 'a': [1, 2, 3, 4], 'foo': 'bar'}
>>> print(json.dumps(a, indent=2))
{
  "hello": "world",
  "a": [
    1,
    2,
    3,
    4
  ],
  "foo": "bar"
}
fcg9iug3

fcg9iug32#

import requests
import json
r = requests.get('http://server.com/api/2/....')
pretty_json = json.loads(r.text)
print (json.dumps(pretty_json, indent=2))
dffbzjpn

dffbzjpn3#

我使用下面的代码直接从我的请求中获得一个json输出-get result,并在pythons json libary function .dumps()的帮助下,通过使用缩进和排序对象键来漂亮地打印这个json对象:

import requests
import json

response = requests.get('http://example.org')
print (json.dumps(response.json(), indent=4, sort_keys=True))
o3imoua4

o3imoua44#

下面是所有答案和一个不重复自己的效用函数的混合:

import requests
import json

def get_pretty_json_string(value_dict):
    return json.dumps(value_dict, indent=4, sort_keys=True, ensure_ascii=False)

# example of the use
response = requests.get('http://example.org/').json()
print (get_pretty_json_string (response))
vh0rcniy

vh0rcniy5#

用于显示unicode值和键。

print (json.dumps(pretty_json, indent=2, ensure_ascii=False))
busg9geu

busg9geu6#

如果你想打印整个json/dict,这些答案是很好的。但是,有时候你只想打印“大纲”,因为值太长了。在这种情况下,你可以使用:

def print_dict_outline(d, indent=0):
    for key, value in d.items():
        print(' ' * indent + str(key))
        if isinstance(value, dict):
            print_dict_outline(value, indent+2)
        elif isinstance(value, list) and all(isinstance(i, dict) for i in value):
            if len(value) > 0:
                keys = list(value[0].keys())
                print(' ' * (indent+2) + 'dict_list')
                for k in keys:
                    print(' ' * (indent+4) + str(k))
# Example dictionary with a list of dictionaries
my_dict = {
    'a': {
        'b': [
            {'c': 1, 'd': 2},
            {'c': 3, 'd': 4}
        ],
        'e': {
            'f': 5
        }
    },
    'g': 6
}

# Print the outline of the dictionary
print_dict_outline(my_dict)

输出为:

a
  b
    dict_list
      c
      d
  e
    f
g

在这个实现中,如果字典键的值是字典列表,我们首先检查列表是否有元素。如果有,我们定义列表中第一个字典的键,并将它们打印为'dict_list'的子标题。我们不打印列表中每个字典的值。这允许我们打印嵌套字典的大纲,其中包括每个字典列表的子标题,而不打印每个字典的单个值。

fxnxkyjh

fxnxkyjh7#

这应该行得通#

import requests
import json

response = requests.get('http://server.com/api/2/....')
formatted_string = json.dumps(response.json(), indent=4)
print(formatted_string)

相关问题