'Validate the GeoJson object based on its type.'

def validate(self, value):

    if isinstance(value, dict):
        if (set(value.keys()) == set(['type', 'coordinates'])):
            if (value['type'] != self._type):
                self.error(('%s    type    must    be    "%s"' % (self._name, self._type)))
            return self.validate(value['coordinates'])
        else:
            self.error(('%s    can    only    accept    a    valid    GeoJson    dictionary    or    lists    of    (x,    y)' % self._name))
            return
    elif (not isinstance(value, (list, tuple))):
        self.error(('%s    can    only    accept    lists    of    [x,    y]' % self._name))
        return
    validate = getattr(self, ('_validate_%s' % self._type.lower()))
    error = validate(value)
    if error:
        self.error(error)
