def _parse_response_body(self, headers, body):
        """
        :param body: Response body.
        :type body: ``str``

        :return: (parsed body, flag which indicates if body has been parsed)
        :rtype: (``object``, ``bool``)
        """
        body = body or ""
        headers = self._normalize_headers(headers=headers)
        content_type = headers.get("content-type", None)
        parsed = False

        if not content_type:
            return (body, parsed)

        # The header can also contain charset which we simply discard
        content_type = content_type.split(";")[0]
        parse_func = RESPONSE_BODY_PARSE_FUNCTIONS.get(content_type, None)

        if not parse_func:
            return (body, parsed)

        LOG.debug("Parsing body with content type: %s", content_type)

        try:
            body = parse_func(body)
        except Exception:
            LOG.exception("Failed to parse body")
        else:
            parsed = True

        return (body, parsed)

        :param body: Response body.
        :type body: ``str``

        :return: (parsed body, flag which indicates if body has been parsed)
        :rtype: (``object``, ``bool``)
        
contrib/runners/http_runner/http_runner/http_runner.py