2. Object serialisation — Turberfield utilities guide 0.43.0

# Turberfield utilities guide 0.43.0

## 2. Object serialisation

The `Assembly` class provides a means of saving your objects to JSON format. They are saved with type information so that you can load them back again as Python objects.

class turberfield.utils.assembly.Assembly
  static register(*args, namespace=None)

    Call this function to register your classes for Assembly.

    Returns a list of the types so far registered.

    In order to create objects from JSON, your types must support construction semantics with keyword arguments (ie: `MyClass(**kwargs)`).

    If this is not possible (as in the case of Enums), then define a classmethod called factory which will be used instead, eg:

        class Colour(enum.Enum):
            red = (255, 0 , 0)
            green = (0, 255 , 0)
            blue = (0, 0 , 255)

            @classmethod
            def factory(cls, name=None, **kwargs):
                return cls[name]

        Assembly.register(Colour)

  static dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kwargs)

    Serialize obj as a JSON formatted stream to fp.

    This function is compatible with json.dump from Python’s standard library, and accepts the same arguments.

  static dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kwargs)

    Serialize obj to a JSON formatted string.

    This function is compatible with json.dumps from Python’s standard library, and accepts the same arguments.

  static loads(s)

    Deserialize a JSON string to Python object(s). Those types you have registered will be recognised and used to create the deserialised objects.