Автор оригинала: David Yeoman.
Вы столкнулись с файлом JSON и в потере, чтобы знать, как извлечь желаемую информацию, или вы не знаете о JSON, но хотелось бы? Сегодня мы представим формат JSON и используете Python для доступа к файлу JSON. Мы извлеким данные, которые нам нужны, и мы будем использовать модуль Python JSON, разработанный специально для этой цели. Я также упомяну о некоторых других вариантах для достижения того же результата.
В качестве дополнительного бонуса я также покажу вам, как преобразовать типы данных Python в формат JSON. Так что давайте начнем.
Что такое файл json?
💡 JSON Стенды для объектов Java Script Object, который является человеческим текстовым форматом для обмена данными. Несмотря на слово Java на имя, JSON является языковым независимым, и большинство основных языков программирования имеют возможность генерировать и разбирать данные с форматом JSON.
Как пользователь Python, вы будете знакомы со списком и видами данных словаря, а основание JSON использует две такие структуры.
- Коллекция пар/ценности пар; а также
- Упорядоченный набор значений.
Вот некоторые JSON отформатированные данные под названием veher_vehicles.json
И вы можете увидеть сходство с нашими типами данных Python.
{ "cars" : [ { "make" : "Audi", "model" : "A4", "year" : 2010 }, { "make" : "Peugeot", "model" : "308", "year" : 2019 }, { "make" : "Toyota", "model" : "Landcruiser", "year" : 2015 } ], "trucks" : [ { "make" : "Citroen", "model" : "HY Van", "year" : 1979 }, { "make" : "Bedford", "model" : "TJ", "year" : 1960 } ] }
Вы можете увидеть Словарь Синтаксис стиля с использованием фигурных скобок и Ключ: значение
Пары, и есть квадратный кронштейн, который выглядит как Список (или массив).
Так как вы читаете файл json?
У Python есть модуль, который кодирует и декодирует файлы формата JSON. Если вы хотите прочитать об этом в Python Standard Библиотека , вы можете найти это здесь Отказ
В своем основном использовании модуль JSON имеет два ключевых метода чтения:
json.load ()
– принимает файл json и преобразует закодированные данные в объект Pythonjson.loads ()
– Занимает json отформатированную строку и преобразует его в объект Python
Давайте напишем какой-нибудь код для импорта JSON и преобразовать файл в формат Python.
Использование метода json.load ()
import json with open('used_vehicles.json') as file: stock = json.load(file)
С этим кодом мы теперь открыли, читайте и преобразовали vehehicle.json
Файл в словарь Python, и мы передали его на «запас». Помните, что если вы используете имя пути в Открыть ()
Команда, используйте сырую строку, разместив букву R
Перед открытием речевой марки – вот пример – Открыть (R'C://pythontutorial/used_vehicles.json ')
Теперь, когда у нас открыты наши данные и преобразованы, давайте распечатаем его и посмотрим, что мы получаем.
import json with open('used_vehicles.json') as file: stock = json.load(file) print(stock) # Result {'cars': [{'make': 'Audi', 'model': 'A4', 'year': 2010}, {'make': 'Peugeot', 'model': '308', 'year': 2019}, {'make': 'Toyota', 'model': 'Landcruiser', 'year': 2015}], 'trucks': [{'make': 'Citroen', 'model': 'HY Van', 'year': 1979}, {'make': 'Bedford', 'model': 'TJ', 'year': 1960}]}
С узнаваемыми необработанными данными мы можем применить стандартные методы Python для извлечения нашей желаемой информации. Мы раскроем информацию о машине и грузовике в более читаемый формат.
import json with open('used_vehicles.json') as file: stock = json.load(file) for cars in stock['cars']: print(cars) print('\n') for trucks in stock['trucks']: print(trucks) # Result {'make': 'Audi', 'model': 'A4', 'year': 2010} {'make': 'Peugeot', 'model': '308', 'year': 2019} {'make': 'Toyota', 'model': 'Landcruiser', 'year': 2015} {'make': 'Citroen', 'model': 'HY Van', 'year': 1979} {'make': 'Bedford', 'model': 'TJ', 'year': 1960}
Затем, наконец, во что-то приближается к нормальному текстовому формату.
import json with open('used_vehicles.json') as file: stock = json.load(file) for cars in stock['cars']: print(cars['make'], cars['model'], '\tManufactured', cars['year']) print('\n') for trucks in stock['trucks']: print(trucks['make'], trucks['model'], '\t\tManufactured', trucks['year']) # Result Audi A4 Manufactured 2010 Peugeot 308 Manufactured 2019 Toyota Landcruiser Manufactured 2015 Citroen HY Van Manufactured 1979 Bedford TJ Manufactured 1960
Обратите внимание на использование \ T
Персонаж, чтобы вставить вкладки, которые сделают напечатанные данные выглядят немного более приборку.
Помните, что код, который мы просто написали подержанные json.load ()
Как мы читали из файла. Если бы у нас была json Formatted String, мы сможем использовать json.loads ()
– Итак, давайте сделаем это тоже.
Использование метода json.loads ()
С помощью следующего примера мы показываем строку JSON, а затем использовать json.loads ()
Команда для преобразования данных в объект Python. В этом примере я также импортировал симпатичную печать, чтобы позволить мне показать окончательный выход в формате, который несколько читается, используя PPRINT ()
команда, а не стандарт Печать ()
формат.
import json from pprint import pprint vehicles_json = """{ "cars" : [ { "make" : "Audi", "model" : "A4", "year" : 2010 }, { "make" : "Peugeot", "model" : "308", "year" : 2019 }, { "make" : "Toyota", "model" : "Landcruiser", "year" : 2015 } ], "trucks" : [ { "make" : "Citroen", "model" : "HY Van", "year" : 1979 }, { "make" : "Bedford", "model" : "TJ", "year" : 1960 } ] } """ vehicles_dict = json.loads(vehicles_json) pprint(vehicles_dict) # Result {'cars': [{'make': 'Audi', 'model': 'A4', 'year': 2010}, {'make': 'Peugeot', 'model': '308', 'year': 2019}, {'make': 'Toyota', 'model': 'Landcruiser', 'year': 2015}], 'trucks': [{'make': 'Citroen', 'model': 'HY Van', 'year': 1979}, {'make': 'Bedford', 'model': 'TJ', 'year': 1960}]} Process finished with exit code 0
Итак, чтобы водить урок домой – помните, что единственное число нагрузка ()
Способ читает из файла и преобразует его на объект Python. Множественное число грузы ()
Способ считывается из строки и аналогично возвращает объект Python.
Бонус: Как мы пишем данные в файл json?
Мы видели в чтении примеров использования нагрузка ()
против грузы ()
Настолько неудивительно, что у нас есть аналогичный синтаксис в сценарии записи, просто обращаясь к процессу. Два метода записи:
- json.dump () – принимает объект Python и сохраняет его в файле JSON
- json.dumps () – принимает объект Python и записывает его прямо на формат строки JSON
Давайте посмотрим на код, необходимый для этих задач.
Использование метода json.dump ()
Сначала используйте json.dump ()
Способ, который пишет в файл – обратите внимание, что открыл файл, используя команду «с ‘», которая мешает нам добавить дополнительную Закрыть ()
Команда в конце блока кода, создавая код Tidier.
Нам также необходимо добавить команду «W», чтобы «написать» в файл, и, наконец, мы используем json.dump ()
синтаксис. Примечание Я включил дополнительный «Отступ»
Команда, чтобы помочь сделать новый файл более читабельным при открытии, отступ на четыре пробела.
import json employees_dict = {'employees' : [ {'name' : 'Adam Smith', 'employee_num' : 187456}, {'name' : 'Sharon McFarlane', 'employee_num' : 847563}, {'name' : 'Karen Angus', 'employee_num' : 678654} ], 'contractors' : [ {'name' : 'John Franklin', 'contract_num' : 7658}, {'name' : 'Kirsty Appleby', 'contract_num' : 3456}, {'name' : 'Jim Armstrong', 'contract_num' : 5678}, ] } with open('C:\PythonTutorials\employee1.json', 'w') as file: json.dump(employees_dict, file, indent=4)
Если мы тогда проверяем C: \ pythontutorians
Папка мы находим следующий файл, который я открыл в блокноте.
Использование метода json.dumps ()
json.dumps ()
Команда пишет в формате строки JSON, поэтому я код и передаю его в переменной, которую мы тогда будем печатать, чтобы увидеть, как это выглядит.
import json employees_dict = {'employees' : [ {'name' : 'Adam Smith', 'employee_num' : 187456}, {'name' : 'Sharon McFarlane', 'employee_num' : 847563}, {'name' : 'Karen Angus', 'employee_num' : 678654} ], 'contractors' : [ {'name' : 'John Franklin', 'contract_num' : 7658}, {'name' : 'Kirsty Appleby', 'contract_num' : 3456}, {'name' : 'Jim Armstrong', 'contract_num' : 5678}, ] } employees_json = json.dumps(employees_dict, indent=4) print(employees_json) # Results { "employees": [ { "name": "Adam Smith", "employee_num": 187456 }, { "name": "Sharon McFarlane", "employee_num": 847563 }, { "name": "Karen Angus", "employee_num": 678654 } ], "contractors": [ { "name": "John Franklin", "contract_num": 7658 }, { "name": "Kirsty Appleby", "contract_num": 3456 }, { "name": "Jim Armstrong", "contract_num": 5678 } ] } Process finished with exit code 0
Как вы можете увидеть при сравнении двух кодов, json.dumps ()
требует меньше строк кода. Вы просто передаете свой словарь к методу, который выводит строку JSON к нашему сотрудники_json
Переменная. Затем вы можете распечатать это или использовать его в другом месте в вашей программе.
Другой вариант для чтения файлов JSON в Python
Стандартный метод Python по созданию HTTP-запросов вызывается, не удивительно, запросы. Используя Получить ()
Метод, вы можете загрузить веб-страницу и передавать его на объект ответа. В пределах Запросы
Модуль заключается в умении преобразовать этот объект ответа, если он находится в формате JSON, в словарь Python Python так же, как мы ранее у нас есть JSON
модуль.
Установить Запросы Библиотека вам нужно будет запустить следующую команду;
$ pip install requests
Затем мы импортируем запросы в наш код до построения Получить ()
запрос. Вот код;
import requests from pprint import pprint response = requests.get("https://api.github.com/") convert = response.json() pprint(convert) # Results {'authorizations_url': 'https://api.github.com/authorizations', 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}', 'commit_search_url': 'https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}', 'current_user_authorizations_html_url': 'https://github.com/settings/connections/applications{/client_id}', 'current_user_repositories_url': 'https://api.github.com/user/repos{?type,page,per_page,sort}', 'current_user_url': 'https://api.github.com/user', . . . 'repository_url': 'https://api.github.com/repos/{owner}/{repo}', 'starred_gists_url': 'https://api.github.com/gists/starred', 'starred_url': 'https://api.github.com/user/starred{/owner}{/repo}', 'user_organizations_url': 'https://api.github.com/user/orgs', 'user_repositories_url': 'https://api.github.com/users/{user}/repos{?type,page,per_page,sort}', 'user_search_url': 'https://api.github.com/search/users?q={query}{&page,per_page,sort,order}', 'user_url': 'https://api.github.com/users/{user}'} Process finished with exit code 0
Вы увидите, что я снова использовал симпатичную печати, чтобы сделать вывод чтения, и я также усеивал возвращенные данные для экономии пространства. Однако во всех других отношениях результаты очень таки, как мы видели ранее.
Чтобы подвести итог
В этой статье мы выяснили, чтобы понять основы файла JSON, и мы узнали, что это тип файла, используемый для простого обмена данными, который может быть прочитан большинством основных языков программирования.
JSON Файлы используют текст в очень специфическом формате, используя структуры, похожие на словарь Python и типы данных списка.
Мы узнали о модуле Python под названием JSON
Что позволяет нам прочитать файлы JSON и записывать их в объекты Python, используя методы нагрузки () и нагрузки (), и аналогично позволяет нам принимать типы данных Python и записывать их в формат JSON, используя модули Dump () и dumps () Отказ
Наконец, мы представили модуль запросов, который представляет собой пакет Python, используемый для обработки HTTP-запросов, и который имеет JSON
Способ преобразования восстановленных данных JSON на объект Python.
Я доверяю эту статью, помогаю в том, как прочитать файл json. Спасибо за чтение.