Using attrs to turn JSONs into Python classes

Question:

I was wondering if it possible to use the attrs library to convert nested JSONs to Python class instances so that I can access attributes in that JSON via dot notation (object.attribute.nested_attribute).

My JSONs have a fixed schema, and I would be fine with having to define the classes for that schema manually, but I’m not sure if it would be possible to turn the JSON into the nested class structure without having to instantiate every nested object individually. I’m basically looking for a fromdict() function that knows (based on the keys) which class to turn a JSON object into.

(I also know that there are other ways to build ‘DotDicts’, but these seem always a bit hacky to me and would probably need thorough testing to verify that they work correctly.)

Asked By: gmolau

||

Answers:

The attrs wiki currently has two serialization libraries:

  1. cattrs
  2. and related.

With cattrs being maintained by one of attrs’ most prolific contributors.

I know that some people mention integrations with other systems too. At this point it’s unlikely that attrs will grow an own solution since the externally developed look pretty good.

Answered By: hynek
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.