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 объяснено предельно подробно, как решать подобные задачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы