> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/python-dictionaries/preobrazovanie-json-v-slovar-python.md).

# Преобразование JSON в словарь Python

В этом руководстве **вы научитесь преобразовывать JSON файл или строку в Python словарь**. Умение работать с JSON данными является важным навыком для разработчика на Python любого уровня. В большинстве случаев данные, к которым вы обращаетесь через веб-API, будут приходить в виде JSON данных. Способность преобразовывать эти JSON объекты в Python словари позволит вам работать с данными более эффективно.

К концу этого урока вы узнаете:

* Как загрузить файл JSON в словарь Python
* Как загрузить строку JSON в словарь
* Как загрузить данные из API в словарь Python

Оглавление

* [Что такое JSON?](#chto-takoe-json)
* [Использование JSON с Python](#ispolzovanie-json-s-python)
* [Загрузите файл JSON в словарь Python](#zagruzite-fail-json-v-slovar-python)
* [Загрузите строку JSON в словарь Python](#zagruzite-stroku-json-v-slovar-python)
* [Загрузите данные JSON из API в словарь Python](#zagruzite-dannye-json-iz-api-v-slovar-python)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Что такое JSON?

JSON означает **JavaScript Object Notation** и это популярный формат для представления данных. Хотя он возник в JavaScript, формат быстро распространился благодаря своей универсальности. Сам формат очень похож на словарь в Python. Однако во многих случаях данные представлены строкой, представляющей объект. Нам нужно преобразовать эту строку в словарь Python, чтобы работать с ней в Python.

### Использование JSON с Python

Python поставляется с встроенной библиотекой `json`, которая позволяет работать с объектами JSON значимыми способами. В этом руководстве мы рассмотрим две ее функции, которые позволяют преобразовывать объекты JSON в словари Python:

* `json.load()`, который загружает файл JSON в словарь Python
* `json.loads()`, который загружает строковое представление JSON файла в словарь Python

Во второй функции, как вы могли догадаться, суффикс `s` относится к `string`. В следующих разделах вы узнаете, как использовать эти функции для преобразования JSON объекта в Python словарь.

### Загрузите файл JSON в словарь Python

В этом разделе **вы узнаете, как использовать функцию `json.load()` для загрузки JSON-файла в словарь Python**. Если вы хотите следовать инструкциям, вы можете [скачать файл здесь](https://raw.githubusercontent.com/datagy/mediumdata/master/iss-now.json). Файл представляет данные с международной космической станции, API которой мы изучим позже в этом уроке.

Давайте посмотрим, как можно использовать функцию `load()` для загрузки внешнего JSON файла:

```python
import json

# Загрузка файла JSON в словарь Python
with open('/Users/nikpi/Desktop/iss-now.json', 'r') as file:
    data = json.load(file)

print(data)

# Выводит:
# {'message': 'success', 'iss_position': {'latitude': '41.8157', 'longitude': '-138.3051'}, 'timestamp': 1652700632}
```

Давайте разберем, что мы сделали в коде выше:

1. Мы загрузили библиотеку `json`
2. Мы использовали менеджер контекста для загрузки нашего файла в режиме чтения, используя псевдоним `file`
3. Затем мы использовали функцию `json.load()`, чтобы загрузить наш файл в переменную `data`
4. Наконец, мы напечатали наш результирующий словарь

Хотя вы можете сделать это без использования менеджера контекста, менеджер контекста обрабатывает закрытие файла, тем самым сохраняя память.

Мы можем проверить тип полученного значения, используя функцию `type()`. Это позволяет нам убедиться, что мы действительно загрузили словарь:

```python
# Checking the Type of Our Loaded Dictionary
import json

with open('/Users/nikpi/Desktop/iss-now.json', 'r') as file:
    data = json.load(file)

print(type(data))

# Returns:
# <class 'dict'>
```

В некоторых случаях вам не придется работать с данными в файле `.json`. Иногда вам будет просто предоставлена строка, представляющая JSON-объект. В следующем разделе вы узнаете, как работать со строками, представляющими JSON

### Загрузите строку JSON в словарь Python

Во многих случаях вам будут предоставлены данные JSON в строковом формате. Работа с ними отличается от работы с файлом `.json`. При работе с строковыми представлениями файла JSON можно использовать функцию `json.loads()`, которая используется для "загрузки строки"

Давайте посмотрим, как это можно сделать на Python с использованием модуля `json`

```python
# Loading a JSON String into a Python Dictionary
import json

json_data = '''
{
  "message": "success",
  "iss_position": {
    "latitude": "41.8157",
    "longitude": "-138.3051"
  },
  "timestamp": 1652700632
}
'''

data = json.loads(json_data)

print(data)

# Returns:
# {'message': 'success', 'iss_position': {'latitude': '41.8157', 'longitude': '-138.3051'}, 'timestamp': 1652700632}
```

Мы видим из приведенного выше примера, что путем передачи строки в функцию `json.loads()`, мы смогли легко преобразовать JSON-строку в словарь Python. В заключительном разделе ниже вы узнаете, как использовать функцию `json.loads()`, чтобы загрузить объект JSON-ответа из веб API в словарь Python.

### Загрузите данные JSON из API в словарь Python

В этом разделе вы узнаете, как использовать библиотеки `json` и `requests` для получения данных из веб-API и загрузки их в словарь Python. Для этого мы будем использовать API NASA, который описывает текущее состояние Международной космической станции. [Вы можете найти его здесь](http://open-notify.org/Open-Notify-API/ISS-Location-Now/). Мы будем использовать конечную точку `iss-now`, которая предоставляет текущее местоположение.

Давайте посмотрим, как мы можем использовать библиотеку `json` для загрузки полученного ответа:

```python
# Loading JSON Data from a Web API into a Python Dictionary
import json
import requests

url = 'http://api.open-notify.org/iss-now.json'
response = requests.get(url)
text = response.text

print(json.loads(text))

# Returns:
# {'message': 'success', 'iss_position': {'latitude': '-51.2011', 'longitude': '-74.2051'}, 'timestamp': 1652719740}
```

Давайте разберем, что мы сделали здесь:

1. Мы импортировали необходимые библиотеки: `json` и `requests`
2. Мы загрузили переменную `response` с помощью функции `requests.get()`, передав наш `url`
3. Затем мы получили текстовое представление из объекта `response`
4. Наконец, мы передали это в функцию `json.loads()`, чтобы преобразовать строку в словарь

Это достаточно много кода, и, к счастью, есть более простой способ! \*\*Библиотека `requests` позволяет нам применять метод `.json()` к объекту ответа, чтобы преобразовать его в словарь

Давайте посмотрим, как это работает:

```python
# Convert an API JSON Response to a Python Dictionary
import requests

url = 'http://api.open-notify.org/iss-now.json'
response = requests.get(url)
data = response.json()

print(data)

# Returns:
# {'message': 'success', 'iss_position': {'latitude': '-45.0692', 'longitude': '-47.9368'}, 'timestamp': 1652720039}
```

В приведённом выше примере нам не нужно было импортировать библиотеку `json`, чтобы преобразовать строку в словарь Python. Это происходит, когда мы загружаем объект `response` с помощью функции `.get()`. Затем мы применяем метод `.json()` к объекту ответа, чтобы преобразовать его в словарь Python.

### Заключение

В этом руководстве вы узнали, как преобразовать JSON в словарь Python. Вы изучили три разных способа сделать это: сначала загрузить файл `.json` в словарь Python, затем загрузить строку JSON в словарь и, наконец, работать с веб APIs.

Работа с данными в формате JSON – важный навык, учитывая его повсеместное распространение. Умение конвертировать этот формат в словарь Python поможет вам в веб-разработке и data science.

### Дополнительные ресурсы

Чтобы узнать больше по смежным темам, ознакомьтесь с руководствами ниже:

* Словари Python: полный обзор
* Python: красивая печать JSON (3 разных способа!)
* Python: Pretty Print a Dict (словарь) – 4 способа
