@classmethod
def deserialize_json(cls, json_data):
    """ Deserialize JSON data into a model.

        :param dict|list json_data: JSON list or dictionary to be deserialized.
        :return: An instance of the same class as the receiver of the call, or a list of instances.
        :rtype: Any|list[Any]
        :raises TypeError: Raised if the data cannot be deserialized.
        """
    objects, error = cls._schema.load(json_data, many=isinstance(json_data,
        list))
    if error:
        raise TypeError(
            """Invalid structure for initialization of `{type}`. 
Error: {error}. 
JSON data: {data}"""
            .format(type=cls.__name__, error=error, data=json_data))
    return objects
