Documentation ¶
Index ¶
- Constants
- Variables
- func CompareJSON(j1 JSON, j2 JSON) (cmp int, err error)
- func PeekBytesAsJSON(b []byte) (n int, err error)
- func Serialize(j JSON) []byte
- type JSON
- func (j JSON) Extract(pathExprList []PathExpression) (ret JSON, found bool)
- func (j JSON) MarshalJSON() ([]byte, error)
- func (j JSON) Merge(suffixes []JSON) JSON
- func (j JSON) Modify(pathExprList []PathExpression, values []JSON, mt ModifyType) (retj JSON, err error)
- func (j JSON) Remove(pathExprList []PathExpression) (JSON, error)
- func (j JSON) String() string
- func (j JSON) Type() string
- func (j *JSON) UnmarshalJSON(data []byte) (err error)
- func (j JSON) Unquote() (string, error)
- type ModifyType
- type PathExpression
- type TypeCode
Constants ¶
const ( // LiteralNil represents JSON null. LiteralNil byte = 0x00 // LiteralTrue represents JSON true. LiteralTrue byte = 0x01 // LiteralFalse represents JSON false. LiteralFalse byte = 0x02 )
Variables ¶
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 ¶
CompareJSON compares two json objects. Returns -1 if j1 < j2, 0 if j1 == j2, else returns 1.
func PeekBytesAsJSON ¶
PeekBytesAsJSON trys to peek some bytes from b, until we can deserialize a JSON from those bytes.
Types ¶
type 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 ¶
Deserialize means deserialize a json from bytes.
func ParseFromString ¶
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 ¶
MarshalJSON implements Marshaler interface.
func (JSON) Merge ¶
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) UnmarshalJSON ¶
UnmarshalJSON implements Unmarshaler interface.
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 )