vo0ov
@vo0ov
Кодер на python

Как преобразовать вложенные словари в объекты с типами для API-обёртки?

Здравствуйте!

Разрабатываю библиотеку для обёртки API на Python. Получаю вложенные JSON-данные и хочу преобразовать их в объекты с атрибутами и аннотациями типов, чтобы IDE пользователей предлагали автодополнение и проверки типов.

Пример данных:
example_data = {
    'fruits': {
        'apple': {
            'color': 'red',
            'taste': 'sweet',
            'quantity': 10,
            'prices': [
                {'store': 'Store A', 'price': 1.2},
                {'store': 'Store B', 'price': 1.3},
                {'store': 'Store C', 'price': 1.5}
            ]
        },
        # ... другие фрукты
    },
    # ... овощи
}


Пример текущего доступа к данным:
# Через get или []
example_data['fruits']['apple']['color']


Что я хочу:
# type(example_data.fruits.apple.quantity) is int == True (Т.е. с аннотациями)
example_data.fruits.apple.quantity


Пример итераторов (для цикла for):
for item in example_data['fruits']['apple']['prices']:
    print(item['store'])


Что я хочу:
# example_data.fruits.apple.prices is list == True
for item in example_data.fruits.apple.prices:
    print(item.store)
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Wispik
@Wispik
можно использовать pydantic
и потом описать модели, согласно нужным типам данных
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
Задачка не маленькая, и попыток ее решить ты не предоставил. Есть вот так вот - хочу вот так вот, и все.
Могу посоветовать книга Fluent Python глава 22 Dynamic Attributes and Properties.
В ней как раз на примере вложенного json объяснено предельно подробно, как решать подобные задачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы