<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def normalize_body(self, b):
 """return the body as a string, formatted to the appropriate content type :param b: mixed, the current raw body :returns: unicode string """

        if b is None: return ''

        if self.is_json():
            # TODO ???
            # I don't like this, if we have a content type but it isn't one
            # of the supported ones we were returning the exception, which threw
            # Jarid off, but now it just returns a string, which is not best either
            # my thought is we could have a body_type_subtype method that would 
            # make it possible to easily handle custom types
            # eg, "application/json" would become: self.body_application_json(b, is_error)
            b = json.dumps(b, cls=ResponseBody)

        else:
            # just return a string representation of body if no content type
            b = String(b, self.encoding)

        return b