def from_json(payload):
        """
        Build an object from a JSON dictionary.


        @param payload: a JSON dictionary which key/value pairs represent
           the members of the Python object to build, or ``None``.


        @return: an instance ``Object`` with members built from the key/value
             pairs of the given JSON dictionary, or ``None`` if the payload
             is ``None`` or the given JSON dictionary is empty.
        """
        if payload is None:
            return None

        if isinstance(payload, dict):
            return Object(**dict([(k, v if not isinstance(v, (dict, list)) else Object.from_json(v))
                    for (k, v) in payload.iteritems()]))

        elif isinstance(payload, list):
            return payload and [Object.from_json(v) if isinstance(v, (dict, list)) else v for v in payload]

        else:
            raise ValueError('The payload MUST be a dictionary or a list')
Build an object from a JSON dictionary.


        @param payload: a JSON dictionary which key/value pairs represent
           the members of the Python object to build, or ``None``.


        @return: an instance ``Object`` with members built from the key/value
             pairs of the given JSON dictionary, or ``None`` if the payload
             is ``None`` or the given JSON dictionary is empty.