Documentation
¶
Overview ¶
package provides a lightweight interface for querying and filter JSON documents using tidwall/gjson-style paths and regular expressions for testing values.
Example
import (
"context"
"flag"
"fmt"
"github.com/aaronland/go-json-query"
"io"
"os"
"strings"
)
func main() {
var queries query.QueryFlags
flag.Var(&queries, "query", "One or more {PATH}={REGEXP} parameters for filtering records.")
valid_modes := strings.Join([]string{query.QUERYSET_MODE_ALL, query.QUERYSET_MODE_ANY}, ", ")
desc_modes := fmt.Sprintf("Specify how query filtering should be evaluated. Valid modes are: %s", valid_modes)
query_mode := flag.String("query-mode", query.QUERYSET_MODE_ALL, desc_modes)
flag.Parse()
paths := flag.Args()
qs := &query.QuerySet{
Queries: queries,
Mode: *query_mode,
}
ctx := context.Background()
for _, path := range paths {
fh, _ := os.Open(path)
defer fh.Close()
body, _ := io.ReadAll(fh)
matches, _ := query.Matches(ctx, qs, body)
fmt.Printf("%s\t%t\n", path, matches)
}
}
Index ¶
Constants ¶
const QUERYSET_MODE_ALL string = "ALL"
QUERYSET_MODE_ALL is a flag to signal that only all matches in a QuerySet needs to be successful.
const QUERYSET_MODE_ANY string = "ANY"
QUERYSET_MODE_ANY is a flag to signal that only one match in a QuerySet needs to be successful.
const SEP string = "="
The separator string used to distinguish {PATH}={REGULAR_EXPRESSION} strings.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Query ¶
type Query struct {
// A valid tidwall/gjson query path.
Path string
// A valid regular expression.
Match *regexp.Regexp
}
Query is an atomic query to perform against a JSON document.
type QueryFlags ¶
type QueryFlags []*Query
QueryFlags holds one or more Query instances that are created using {PATH}={REGULAR_EXPRESSION} strings.
func (*QueryFlags) Set ¶
func (m *QueryFlags) Set(value string) error
Parse a {PATH}={REGULAR_EXPRESSION} string and store it as one of a set of Query instances.
func (*QueryFlags) String ¶
func (m *QueryFlags) String() string
Return the string value of the set of Query instances. Currently returns "".