IEnumerable<int> IArrayIndexExpression.GetIndices(JsonElement array) { if (_expression.OutputType != QueryExpressionType.Number && _expression.OutputType != QueryExpressionType.InstanceDependent) return new int[] { }; var result = _expression.Evaluate(array); if (result.ValueKind != JsonValueKind.Number) return new int[] { }; var index = result.GetDecimal(); if (Math.Truncate(index) != index) return new int[] { }; return new[] {(int) index}; }
IEnumerable <int> IArrayIndexExpression.GetIndices(JsonElement array) { if (_expression.OutputType != QueryExpressionType.Number && _expression.OutputType != QueryExpressionType.InstanceDependent) { return new int[] { } } ; var result = _expression.Evaluate(array); if (result.ValueKind != JsonValueKind.Number) { return new int[] { } } ; var index = result.GetDecimal(); if (Math.Truncate(index) != index) { return new int[] { } } ; return(new[] { (int)index }); } IEnumerable <string> IObjectIndexExpression.GetProperties(JsonElement obj) { if (_expression.OutputType != QueryExpressionType.String && _expression.OutputType != QueryExpressionType.InstanceDependent) { return new string[] { } } ; var result = _expression.Evaluate(obj); if (result.ValueKind != JsonValueKind.String) { return new string[] { } } ; var index = result.GetString(); return(new[] { index }); }
private bool Evaluate(JsonElement item) { if (_expression.OutputType != QueryExpressionType.Boolean && _expression.OutputType != QueryExpressionType.InstanceDependent) { return(false); } var result = _expression.Evaluate(item); if (result.ValueKind != JsonValueKind.True && result.ValueKind != JsonValueKind.False) { return(false); } return(result.GetBoolean()); }