def validate_value()

in experimenter/experimenter/experiments/api/v5/serializers.py [0:0]


    def validate_value(self, value):
        data = None
        if value:
            try:
                data = json.loads(value)
            except Exception as e:
                raise serializers.ValidationError(f"Invalid JSON: {e.msg}") from e

        def throw_on_float(item):
            if isinstance(item, (list, tuple)):
                for i in item:
                    throw_on_float(i)
            elif isinstance(item, dict):
                for i in item.values():
                    throw_on_float(i)
            elif isinstance(item, float):
                raise serializers.ValidationError(
                    NimbusExperiment.ERROR_NO_FLOATS_IN_FEATURE_VALUE
                )

        if data is not None:
            throw_on_float(data)

        return value