Рубрики
Без рубрики

Вложенное JSON на Python Object

Сегодня я создавал файл конфигурации, в прошлом я получал доступ к конфигурации в качестве словаря, но … Tagged with json, python, вложенный, объект.

Сегодня я создавал файл конфигурации, в прошлом я получал доступ к конфигурации в качестве словаря, но на этот раз я думаю об изменении этого. Следующий код создает динамические атрибуты с рекурсивными клавишами объектов.

Но сначала я покажу объект JSON:

{
  "key": "value",
  "list": [
    "a",
    "b",
    "c",
    1,
    {
      "key": 1
    }
  ],
  "object": {
    "key": {
      "key": 1
    }
  }
}

На конверсии у нас есть 3 случая:

  • списки
  • DICTS (новый объект)
  • bool, int, float и str
import json

class AppConfiguration(object):
    def __init__(self, data=None):
        if data is None:
            with open("cfg.json") as fh:
                data = json.loads(fh.read())
        else:
            data = dict(data)

        for key, val in data.items():
            setattr(self, key, self.compute_attr_value(val))

    def compute_attr_value(self, value):
        if type(value) is list:
            return [self.compute_attr_value(x) for x in value]
        elif type(value) is dict:
            return AppConfiguration(value)
        else:
            return value

Теперь ключом, пары значений являются атрибутами – объектами.

instance = AppConfiguration()
>>>instance.key
'value'

>>>instance.list[4].key
1

>>> instance.object.key.key
1

Оригинал: “https://dev.to/mandrewcito/nested-json-to-python-object–5ajp”