:returns: obj._reprJSON() if it is defined, else
            json.JSONEncoder.default(obj)

def default(self, obj):
        """
        :returns: obj._reprJSON() if it is defined, else
            json.JSONEncoder.default(obj)
        """
        if hasattr(obj, '_reprJSON'):
            return obj._reprJSON()
        #Let the base class default method raise the TypeError
        return json.JSONEncoder.default(self, obj)