jsonquery

package
v0.0.0-...-7619ade Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 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) Array

func (q *Query) Array(key string, optional bool) ([]*ajson.Node, error)

Array returns list of nodes. Optional argument set to false will create error in case of missing value. Empty key is interpreter as "this", in other words current node.

func (*Query) ArraySize

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

ArraySize returns the array size located under key. It is assumed that array value must be not null and present. Empty key is interpreter as "this", in other words current node.

func (*Query) Bool

func (q *Query) Bool(key string, optional bool) (*bool, error)

Bool returns boolean. Optional argument set to false will create error in case of missing value. Empty key is interpreter as "this", in other words current node.

func (*Query) BoolWithDefault

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

func (*Query) Integer

func (q *Query) Integer(key string, optional bool) (*int64, error)

Integer returns integer. Optional argument set to false will create error in case of missing value. Empty key is interpreter as "this", in other words current node.

func (*Query) IntegerWithDefault

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

func (*Query) Object

func (q *Query) Object(key string, optional bool) (*ajson.Node, error)

Object returns json object. Optional argument set to false will create error in case of missing value. Empty key is interpreter as "this", in other words current node.

func (*Query) Str

func (q *Query) Str(key string, optional bool) (*string, error)

Str returns string. Optional argument set to false will create error in case of missing value. Empty key is interpreter as "this", in other words current node.

func (*Query) StrWithDefault

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

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