Лекции
November 6, 2020

JSON, Сериализация

1. О формате JSON

JSON — JavaScript Object Notation. Он нужен для хранения и передачи структурированной информации.

Соотношение типов из python с типами из json:

JSON решает проблему общения между несколькими сервисами. Давайте рассмотрим такой пример: клиент приходит в магазин за стулом. Его не слишком волнуют габариты стула, он знает только примерно, что хочет высокий стул с мягкими подлокотниками тёмного цвета не дороже 5000 рублей, он передаёт эту информацию продавцу. Продавец, опираясь на документы, в которых описаны габариты, материалы и цвета предлагает несколько вариантов. Это очень простой пример клиент-серверного взаимодействия. В базе данных мы можем хранить любые сведения в любом удобном нам формате, но клиенту мы должны передавать её в понятном виде.

Что почитать:

2. Сериализация

Сериализация - это процесс представления данных в виде строки.

Т.е. у нас есть определенный набор данных, который хранится в массиве или он представляет собой некий объект. Если провести процесс сериализации для этого набора данных, то этот набор данных мы представим в виде строки по какому-то определенному набору правил.

В зависимости от применяемого набора правил, на выходе мы получим некую текстовую строку, которая будет оформлена по каким-то правилам. Это набор правил называется форматом.

Чаще всего при сериализации данных они формируются в формате json.

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

Что почитать:

3. Работа с сериализаторами

Давайте для начала попробуем написать свой сериализатор. На прошлой паре мы разбирали с вами метод values для получения словаря из объекта, который находится в Queryset. Давайте от этого и будем отталкиваться. Можно также поработать для начала в консоли.

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

Пример запроса через curl (на создание):

$ curl -X POST -d '{"profession": {"title": "Преподаватель", "description": "Тяжкий труд"}}' http://127.0.0.1:8000/api/profession/create/ -H "Content-type: application/json"

{"Success":"Profession 'Преподаватель' created succesfully."}