DEV Community


Nested json to python object

Andrés Baamonde Lozano
Bohemian Developer
・1 min read

Today i was creating a configuration file, in the past, i accessed configuration as a dictionary, but this time, i think about changing that. The follwing code creates dynamic attributes with the objects keys recursively.

But first, i'll show the json object:

  "key": "value",
  "list": [
      "key": 1
  "object": {
    "key": {
      "key": 1

Enter fullscreen mode Exit fullscreen mode

On the conversion we have 3 cases:

  • lists
  • dicts (new object)
  • bool, int, float and str
import json

class AppConfiguration(object):
    def __init__(self, data=None):
        if data is None:
            with open("cfg.json") as fh:
                data = json.loads(
            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)
            return value
Enter fullscreen mode Exit fullscreen mode

Now the key, value pairs are attributes - objects.

instance = AppConfiguration()


>>> instance.object.key.key
Enter fullscreen mode Exit fullscreen mode

Discussion (1)

ouzkagan profile image

how can i create json file like your example from scratch in python