jsonquery

package
v0.0.0-...-4af8b2f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrKeyNotFound = errors.New("key not found")
	ErrNullJSON    = errors.New("value of JSON key is null")
	ErrNotArray    = errors.New("JSON value is not an array")
	ErrNotObject   = errors.New("JSON value is not an object")
	ErrNotString   = errors.New("JSON value is not a string")
	ErrNotBool     = errors.New("JSON value is not a boolean")
	ErrNotNumeric  = errors.New("JSON value is not a numeric")
	ErrNotInteger  = errors.New("JSON value is not an integer")
	ErrUnpacking   = errors.New("failed to unpack ajson node")
)
View Source
var Convertor = convertor{} //nolint:gochecknoglobals

Convertor provides common conversion methods from ajson to go types.

Functions

func ParseNode

func ParseNode[T any](node *ajson.Node) (*T, error)

Types

type Query

type Query struct {
	// contains filtered or unexported fields
}

Query is a helpful wrapper of ajson library that adds errors when querying JSON payload.

Usage examples, where node is JSON parsed via ajson library:

->	Must get *int64:					jsonquery.New(node).Integer("num", false)
->	Optional *string:					jsonquery.New(node).String("text", true)
->	Nested array:						jsonquery.New(node, "your", "path", "to", "array").Array("list", false)
->	Convert current obj to list:		jsonquery.New(node).Array("", false)

func New

func New(node *ajson.Node, zoom ...string) *Query

New constructs query searching for key. Extra keys are preceding forming a zoom path.

func (*Query) ArrayOptional

func (q *Query) ArrayOptional(key string) ([]*ajson.Node, error)

ArrayOptional returns array of nodes if present. If the entity at the key path is not an array, an error is returned. Empty key is interpreted as "this", in other words a current node.

func (*Query) ArrayRequired

func (q *Query) ArrayRequired(key string) ([]*ajson.Node, error)

ArrayRequired returns array of nodes. If the entity at the key path is not an array or is missing, an error is returned. Empty key is interpreted as "this", in other words a current node. Missing key returns ErrKeyNotFound. Null value returns ErrNullJSON.

func (*Query) BoolOptional

func (q *Query) BoolOptional(key string) (*bool, error)

BoolOptional returns boolean if present. If the entity at the key path is not a boolean, an error is returned. Empty key is interpreted as "this", in other words a current node.

func (*Query) BoolRequired

func (q *Query) BoolRequired(key string) (bool, error)

BoolRequired returns boolean. If the entity at the key path is not a boolean or is missing, an error is returned. Empty key is interpreted as "this", in other words a current node. Missing key returns ErrKeyNotFound. Null value returns ErrNullJSON.

func (*Query) BoolWithDefault

func (q *Query) BoolWithDefault(key string, defaultValue bool) (bool, error)

func (*Query) IntegerOptional

func (q *Query) IntegerOptional(key string) (*int64, error)

IntegerOptional returns integer if present. If the entity at the key path is not an integer, an error is returned. Empty key is interpreter as "this", in other words current node.

func (*Query) IntegerRequired

func (q *Query) IntegerRequired(key string) (int64, error)

IntegerRequired returns integer. If the entity at the key path is not an integer or is missing, an error is returned. Empty key is interpreter as "this", in other words current node. Missing key returns ErrKeyNotFound. Null value returns ErrNullJSON.

func (*Query) IntegerWithDefault

func (q *Query) IntegerWithDefault(key string, defaultValue int64) (int64, error)

func (*Query) ObjectOptional

func (q *Query) ObjectOptional(key string) (*ajson.Node, error)

ObjectOptional returns node object if present. If the entity at the key path is not a node object, an error is returned. Empty key is interpreter as "this", in other words current node.

func (*Query) ObjectRequired

func (q *Query) ObjectRequired(key string) (*ajson.Node, error)

ObjectRequired returns node object. If the entity at the key path is not a node object or is missing, an error is returned. Empty key is interpreter as "this", in other words current node. Missing key returns ErrKeyNotFound. Null value returns ErrNullJSON.

func (*Query) StrWithDefault

func (q *Query) StrWithDefault(key string, defaultValue string) (string, error)

func (*Query) StringOptional

func (q *Query) StringOptional(key string) (*string, error)

StringOptional returns string if present. If the entity at the key path is not a string, an error is returned. Empty key is interpreted as "this", in other words a current node.

func (*Query) StringRequired

func (q *Query) StringRequired(key string) (string, error)

StringRequired returns string. If the entity at the key path is not a string or is missing, an error is returned. Empty key is interpreted as "this", in other words a current node. Missing key returns ErrKeyNotFound. Null value returns ErrNullJSON.

func (*Query) TextWithDefault

func (q *Query) TextWithDefault(key string, defaultValue string) (string, error)

TextWithDefault returns a string under the key regardless of JSON data type. If data is not a string it will be converted to such.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL