json

package
v0.0.0-...-14e0149 Latest Latest
Warning

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

Go to latest
Published: Aug 24, 2017 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// LiteralNil represents JSON null.
	LiteralNil byte = 0x00
	// LiteralTrue represents JSON true.
	LiteralTrue byte = 0x01
	// LiteralFalse represents JSON false.
	LiteralFalse byte = 0x02
)

Variables

View Source
var (
	// ErrInvalidJSONText means invalid JSON text.
	ErrInvalidJSONText = terror.ClassJSON.New(mysql.ErrInvalidJSONText, mysql.MySQLErrName[mysql.ErrInvalidJSONText])
	// ErrInvalidJSONPath means invalid JSON path.
	ErrInvalidJSONPath = terror.ClassJSON.New(mysql.ErrInvalidJSONPath, mysql.MySQLErrName[mysql.ErrInvalidJSONPath])
	// ErrInvalidJSONData means invalid JSON data.
	ErrInvalidJSONData = terror.ClassJSON.New(mysql.ErrInvalidJSONData, mysql.MySQLErrName[mysql.ErrInvalidJSONData])
)

Functions

func CompareJSON

func CompareJSON(j1 JSON, j2 JSON) (cmp int, err error)

CompareJSON compares two json objects. Returns -1 if j1 < j2, 0 if j1 == j2, else returns 1.

func PeekBytesAsJSON

func PeekBytesAsJSON(b []byte) (n int, err error)

PeekBytesAsJSON trys to peek some bytes from b, until we can deserialize a JSON from those bytes.

func Serialize

func Serialize(j JSON) []byte

Serialize means serialize itself into bytes.

Types

type JSON

type JSON struct {
	TypeCode TypeCode
	I64      int64
	Str      string
	Object   map[string]JSON
	Array    []JSON
}

JSON is for MySQL JSON type.

func CreateJSON

func CreateJSON(in interface{}) JSON

CreateJSON creates a JSON from in. Panic if any error occurs.

func Deserialize

func Deserialize(data []byte) (j JSON, err error)

Deserialize means deserialize a json from bytes.

func ParseFromString

func ParseFromString(s string) (j JSON, err error)

ParseFromString parses a json from string.

func (JSON) Extract

func (j JSON) Extract(pathExprList []PathExpression) (ret JSON, found bool)

Extract receives several path expressions as arguments, matches them in j, and returns:

ret: target JSON matched any path expressions. maybe autowrapped as an array.
found: true if any path expressions matched.

func (JSON) MarshalJSON

func (j JSON) MarshalJSON() ([]byte, error)

MarshalJSON implements Marshaler interface.

func (JSON) Merge

func (j JSON) Merge(suffixes []JSON) JSON

Merge merges suffixes into j according the following rules: 1) adjacent arrays are merged to a single array; 2) adjacent object are merged to a single object; 3) a scalar value is autowrapped as an array before merge; 4) an adjacent array and object are merged by autowrapping the object as an array.

func (JSON) Modify

func (j JSON) Modify(pathExprList []PathExpression, values []JSON, mt ModifyType) (retj JSON, err error)

Modify modifies a JSON object by insert, replace or set. All path expressions cannot contain * or ** wildcard. If any error occurs, the input won't be changed.

func (JSON) Remove

func (j JSON) Remove(pathExprList []PathExpression) (JSON, error)

Remove removes the elements indicated by pathExprList from JSON.

func (JSON) String

func (j JSON) String() string

String implements fmt.Stringer interface.

func (JSON) Type

func (j JSON) Type() string

Type returns type of JSON as string.

func (*JSON) UnmarshalJSON

func (j *JSON) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON implements Unmarshaler interface.

func (JSON) Unquote

func (j JSON) Unquote() (string, error)

Unquote is for JSON_UNQUOTE.

type ModifyType

type ModifyType byte

ModifyType is for modify a JSON. There are three valid values: ModifyInsert, ModifyReplace and ModifySet.

const (
	// ModifyInsert is for insert a new element into a JSON.
	ModifyInsert ModifyType = 0x01
	// ModifyReplace is for replace an old elemList from a JSON.
	ModifyReplace ModifyType = 0x02
	// ModifySet = ModifyInsert | ModifyReplace
	ModifySet ModifyType = 0x03
)

type PathExpression

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

PathExpression is for JSON path expression.

func ParseJSONPathExpr

func ParseJSONPathExpr(pathExpr string) (pe PathExpression, err error)

ParseJSONPathExpr parses a JSON path expression. Returns a PathExpression object which can be used in JSON_EXTRACT, JSON_SET and so on.

type TypeCode

type TypeCode byte

TypeCode indicates JSON type.

const (
	// TypeCodeObject indicates the JSON is an object.
	TypeCodeObject TypeCode = 0x01
	// TypeCodeArray indicates the JSON is an array.
	TypeCodeArray TypeCode = 0x03
	// TypeCodeLiteral indicates the JSON is a literal.
	TypeCodeLiteral TypeCode = 0x04
	// TypeCodeInt64 indicates the JSON is a signed integer.
	TypeCodeInt64 TypeCode = 0x09
	// TypeCodeUint64 indicates the JSON is a unsigned integer.
	TypeCodeUint64 TypeCode = 0x0a
	// TypeCodeFloat64 indicates the JSON is a double float number.
	TypeCodeFloat64 TypeCode = 0x0b
	// TypeCodeString indicates the JSON is a string.
	TypeCodeString TypeCode = 0x0c
)

Jump to

Keyboard shortcuts

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