Python вывести json красиво

pretty-print json in python (pythonic way)

I know that the pprint python standard library is for pretty-printing python data types. However, I’m always retrieving json data, and I’m wondering if there is any easy and fast way to pretty-print json data? No pretty-printing:

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()) 

In your example you’re not printing JSON anywhere. You decode it (by doing r.json() ), so it’s just a Python data structure after that. So what exactly do you want to pretty print? Python data structures or JSON?

7 Answers 7

Python’s builtin JSON module can handle that for you:

>>> import json >>> a = >>> print(json.dumps(a, indent=2))
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)) 

I used following code to directly get a json output from my requests-get result and pretty printed this json object with help of pythons json libary function .dumps() by using indent and sorting the object keys:

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

While this code may answer the question, providing additional context regarding how and/or why it solves the problem would improve the answer’s long-term value.

Читайте также:  Открываем браузер через php

Here’s a blend of all answers and an utility function to not repeat yourself:

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)) 

Use for show unicode values and key.

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

These answers are good if you want to print the entire json/dict. However, there are times when you only want the «outline», since the values are too long. In this case you can use this:

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': [ , ], 'e': < 'f': 5 >>, 'g': 6 > # Print the outline of the dictionary print_dict_outline(my_dict) 

In this implementation, if the value of a dictionary key is a list of dictionaries, we first check if the list has any elements. If it does, we define the keys of the first dictionary in the list, and print them as subheadings of ‘dict_list’. We do not print the values for each dictionary in the list, only the keys. This allows us to print an outline of the nested dictionary that includes subheadings for each list of dictionaries, without printing the individual values of each dictionary.

Источник

Pretty-Print JSON Data to a File using Python

A project for class involves parsing Twitter JSON data. I’m getting the data and setting it to the file without much trouble, but it’s all in one line. This is fine for the data manipulation I’m trying to do, but the file is ridiculously hard to read and I can’t examine it very well, making the code writing for the data manipulation part very difficult. Does anyone know how to do that from within Python (i.e. not using the command line tool, which I can’t get to work)? Here’s my code so far:

header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) # now write output to a file twitterDataFile = open("twitterData.json", "wb") # magic happens here to make it pretty-printed twitterDataFile.write(output) twitterDataFile.close() 

Note I appreciate people pointing me to simplejson documentation and such, but as I have stated, I have already looked at that and continue to need assistance. A truly helpful reply will be more detailed and explanatory than the examples found there. Thanks Also: Trying this in the windows command line:

more twitterData.json | python -mjson.tool > twitterData-pretty.json 
Invalid control character at: line 1 column 65535 (char 65535) 

I’d give you the data I’m using, but it’s very large and you’ve already seen the code I used to make the file.

Источник

Как красиво напечатать файл JSON на Python

Набор кистей для макияжа.

Как и многие другие языки программирования, Python хорошо работает с данными JavaScript Object Notation (JSON). Он может получать эти данные из нескольких источников и работать с ними, как с любым другим файлом. Это полезно, если вы хотите распечатать файл JSON в Python.

В этом посте мы покажем вам, как распечатать файл JSON двумя способами. Оба потребуют использования Терминала и командной строки, хотя для одного из них вам могут вообще не понадобиться знания Python.

Что такое Pretty Print (и почему вы хотите использовать его с файлами JSON)

Короче говоря, красивая печать принимает данные в необработанном формате и преобразует их во что-то удобочитаемое. Другими словами, это делает его красивым.

Уточненные данные в Neovim.

В обычных обстоятельствах вы будете делать это с файлами, загруженными в вашу программу, которые должны быть проанализированы человеком. Часто данные из файлов других форматов (например, файлов JSON) «минифицированы». Это удаляет все пустое пространство из кода, чтобы компьютер облегчил его синтаксический анализ.

Например, вы можете взять необработанные данные базы данных, которые были уменьшены, и запустить их через сценарий, чтобы добавить правильный отступ и другое форматирование. Оттуда вы можете экспортировать его другим и работать с ним по своему усмотрению.

Как красиво напечатать файл JSON на Python

Ниже мы покажем вам, как красиво распечатать файл JSON в Python. В наших примерах мы используем NeoVim и встроенную команду : term . Однако нет причин, по которым вы не могли бы сделать это прямо из самого Терминала в интерпретаторе Python.

1. Определите свой файл JSON

Во-первых, нам нужны данные JSON для работы. Есть два подхода, которые вы можете использовать — путем определения данных в вашем скрипте Python или через файл JSON. Мы делаем ставку на то, что большая часть данных будет поступать из файла, поэтому здесь мы сосредоточимся на этом.

В нашем случае у нас есть дамп данных JSON с примененным нулевым форматированием.

Дамп содержимого JSON.

Этот файл — address.json — можно перенести в Python и отформатировать. Чтобы работать с файлами JSON в Python, вам необходимо импортировать модуль json. Затем вы можете определить сам файл как переменную.

Определение файла в Python.

Когда вы дойдете до этого места, вы можете начать работать с «address.json».

2. Откройте файл JSON с помощью Python.

Открытие и загрузка файла в Python.

Затем вам нужно открыть «address.json». Это делается обычным способом с помощью метода open… as :

Затем в этом блоке кода вам нужно будет вызвать json.load () для «address.json» и присвоить его переменной:

Если вы запустите этот файл сейчас, он запустится, но вы не увидите никаких результатов в Терминале. Для этого вам нужно перейти к третьему шагу.

3. Распечатайте свой файл JSON (и измените настройки)

Последний аспект красивой печати вашего JSON-файла — это выполнение самой печати. Для этого добавьте следующую строку в кодовый блок с открытым… as в виде строки с отступом:

print(json.dumps(parsed, indent=4, sort_keys=True))

Чтобы разобраться в этом, функция print вызывает json.dumps () . Это касается трех аргументов:

  • Имя файла, который вы хотите красиво распечатать.
  • Размер отступа.
  • Следует ли сортировать файл JSON по его ключам.

Когда будете готовы, сохраните изменения, а затем откройте новое окно терминала. Здесь вам нужно перейти в нужную папку проекта и запустить программу.

Использование терминала для запуска вашей программы.

Вывод Терминала применит ваши настройки и распечатает файл JSON.

Вывод терминала показывает довольно распечатанные данные.

Конечно, вы обычно храните красивый JSON в другом месте, а не печатаете данные в Терминале. Тем не менее, есть однострочный фрагмент, который можно использовать для красивой печати файла JSON из командной строки.

Как красиво напечатать файл JSON в Python из командной строки

Существует сверхбыстрый способ распечатать файлы JSON в Python прямо из командной строки в качестве вывода Терминала. Для этого откройте новое окно терминала, перейдите в папку своего проекта и выполните следующее:

кошачьи адреса. json | python3 -m json. инструмент

В этом примере вам нужно заменить «address.json» на собственное имя файла. После того, как вы запустите это, вы увидите вывод в формате отображения терминала.

Это отличное решение без кода для удобной печати файлов JSON на Python на лету, запуск которого занимает секунды.

Заключение

Существует несколько способов красивой печати файла JSON в Python. Часто вам нужно сделать уменьшенные данные доступными для чтения, возможно, для экспорта другим пользователям. Независимо от вашей причины, Python позволяет вам делать это с помощью модуля json и блока кода «с открытым… как».

Если вам интересно, что еще может сделать для вас Python, ознакомьтесь с другими нашими статьями о циклах Python и функции диапазон (). Поможет ли этот метод вам в повседневной работе, и если да, то как? Дайте нам знать в комментариях ниже!

Источник

Оцените статью