code: def loads(
          self, json_data, many=None, partial=None, unknown=None,
          **kwargs
      ):
          
          data = self.opts.render_module.loads(json_data, **kwargs)
          return self.load(data, many=many, partial=partial, unknown=unknown)
docs: Same as :meth:`load`, except it takes a JSON string as input.
  
          :param str json_data: A JSON string of the data to deserialize.
          :param bool many: Whether to deserialize `obj` as a collection. If `None`, the
              value for `self.many` is used.
          :param bool|tuple partial: Whether to ignore missing fields and not require
              any fields declared. Propagates down to ``Nested`` fields as well. If
              its value is an iterable, only missing fields listed in that iterable
              will be ignored. Use dot delimiters to specify nested fields.
          :param unknown: Whether to exclude, include, or raise an error for unknown
              fields in the data. Use `EXCLUDE`, `INCLUDE` or `RAISE`.
              If `None`, the value for `self.unknown` is used.
          :return: A dict of deserialized data
          :rtype: dict
  
          .. versionadded:: 1.0.0
          .. versionchanged:: 3.0.0b7
              This method returns the deserialized data rather than a ``(data, errors)`` duple.
              A :exc:`ValidationError <marshmallow.exceptions.ValidationError>` is raised
              if invalid data are passed.