Format json with python

Формат данных JSON в Python

JSON (JavaScript Object Notation) это легковесный формат обмена данными. Людям его легко читать и вести в нем записи, а компьютеры запросто справляются с его синтаксическим анализом и генерацией.

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

JSON построен на двух структурах:

  • Набор пар «имя-значение». Они могут быть реализованы как объект, запись, словарь, хеш-таблица, список «ключей-значений» или ассоциативный массив.
  • Упорядоченный список значений. Его реализуют в виде массива, вектора, списка или последовательности.

JSON в Python

В Python есть ряд пакетов, поддерживающих JSON, в частности metamagic.json, jyson, simplejson, Yajl-Py, ultrajson, и json. В этом руководстве мы будем использовать json, имеющий «родную» поддержку в Python. Для проверки данных JSON мы можем воспользоваться этим сайтом, предоставляющим JSON-линтер.

Ниже приведен пример записи JSON. Как видим, представление данных очень похоже на словари Python.

Конвертируем JSON в объекты Python

Вышеуказанную JSON-строку мы можем спарсить при помощи метода json.loads() из модуля json . В итоге получим словарь Python.

import json my_json_string = """< "article": [ < "id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti" >, < "id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti" >], "blog":[ < "name": "Datacamp", "URL":"datacamp.com" >] > """ to_python = json.loads(my_json_string)

Конвертируем объекты Python в JSON

Используя json.dumps() , мы можем сконвертировать объекты Python в формат JSON.

blog = to_json= json.dumps(blog)

Теперь давайте сравним типы данных в Python и JSON.

Читайте также:  Python получаем все ссылки со страницы
Python JSON
dict Object
list Array
tuple Array
str String
int Number
float Number
True true
False false
None null

Ниже мы покажем, как сконвертировать некоторые объекты Python в типы данных JSON.

Кортеж Python — в массив JSON

tuple_example = 'Mango', 'Banana', 'Apple' print(json.dumps(tuple_example))

Список Python — в массив JSON

list_example = ["Mango", 1, 3, 6, "Oranges"] print(json.dumps(list_example))

Строка Python — в строку JSON

string_example = "This is a cool example." print(json.dumps(string_example))

Булевы значения Python — в булевы значения JSON

boolean_value = False print(json.dumps(boolean_value))

Запись в файл JSON

Модуль json позволяет также записывать данные JSON в файл. Такие файлы сохраняют с расширением .json .

Давайте посмотрим, как это сделать. Для этого воспользуемся функцией open() с параметром w , сигнализирующим о том, что мы хотим записать в файл.

my_json_string = """< "article": [ < "id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti" >, < "id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti" >], "blog":[ < "name": "Datacamp", "URL":"datacamp.com" >] > """ with open('test_file.json', 'w') as file: json.dump(my_json_string, file)

Чтение файлов JSON

Теперь продемонстрируем, как прочитать только что созданный нами файл JSON. Для его загрузки вызовем json.load() .

with open('test_file.json', 'r') as j: json_data = json.load(j) print(json_data)

json.load vs json.loads

json.load используют для загрузки файла, а json.loads – для загрузки строки (loads расшифровывается как «load string»).

json.dump vs json.dumps

Аналогично, json.dump применяется, если нужно сохранить JSON в файл, а json.dumps (dump string) – если данные JSON нам нужны в виде строки для парсинга или вывода.

Работа с данными JSON в Data Science

Иногда при работе над проектами, связанными с data science, требуется загрузить данные в формате JSON. Библиотека для анализа данных Pandas предоставляет для этого функцию .read_json . Как только данные загружены, мы конвертируем их в объект dataframe при помощи атрибута pandas.DataFrame .

import pandas as pd data = pd.read_json("https://api.github.com/users") df = pd.DataFrame(data)

Ограничения имплементации

Процесс кодирования в JSON называется сериализацией, а декодирования – десериализацией. Некоторые реализации десериализаторов имеют ограничения на:

  • размер принимаемых текстов JSON
  • максимальный уровень вложенности объектов и массивов JSON
  • диапазон точности чисел JSON
  • содержание и максимальную длину строк JSON.
Читайте также:  Как вывести тип ошибки python

Впрочем, подобные ограничения связаны только с типами данных Python и работой самого интерпретатора Python.

Формат JSON в разработке API

Одно из важнейших применений JSON – для разработки API в веб-приложениях. Этот формат очень полезен, ведь позволяет коллегам-разработчикам строить систему на основе наших API, используя любой язык, поддерживающий JSON. А такой поддержкой обладают практически все современные языки. На простом примере покажем, как вернуть JSON при разработке приложения на Python с фреймворком Flask. Flask предоставляет для этого модуль jsonify .

from flask import jsonify @app.route('/_get_current_user') def get_current_user(): return jsonify(username=g.user.username, email=g.user.email, > Эта программа отправит в браузер что-то вроде следующего:

Заключение

В этом уроке мы сделали небольшое введение в особенности работы с JSON в Python. Рассмотрели использование различных методов из модуля json, таких как json.load и json.dumps . Кроме того, мы разобрали, как загрузить данные в формате JSON для работы в проектах data science и как возвращать JSON при разработке API. Узнать больше о модуле json можно на его официальной странице на сайте Python.

Источник

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