Documentation ¶
Index ¶
- Constants
- Variables
- func CompareBinary(left, right BinaryJSON) int
- func PeekBytesAsJSON(b []byte) (n int, err error)
- type BinaryJSON
- func (bj BinaryJSON) Copy() BinaryJSON
- func (bj BinaryJSON) Extract(pathExprList []PathExpression) (ret BinaryJSON, found bool)
- func (bj BinaryJSON) GetFloat64() float64
- func (bj BinaryJSON) GetInt64() int64
- func (bj BinaryJSON) GetString() []byte
- func (bj BinaryJSON) GetUint64() uint64
- func (bj BinaryJSON) MarshalJSON() ([]byte, error)
- func (bj BinaryJSON) Modify(pathExprList []PathExpression, values []BinaryJSON, mt ModifyType) (retj BinaryJSON, err error)
- func (bj BinaryJSON) Remove(pathExprList []PathExpression) (BinaryJSON, error)
- func (bj BinaryJSON) String() string
- func (bj BinaryJSON) Type() string
- func (bj *BinaryJSON) UnmarshalJSON(data []byte) error
- func (bj BinaryJSON) 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 CompareBinary ¶
func CompareBinary(left, right BinaryJSON) int
CompareBinary compares two binary json objects. Returns -1 if left < right, 0 if left == right, else returns 1.
func PeekBytesAsJSON ¶
PeekBytesAsJSON trys to peek some bytes from b, until we can deserialize a JSON from those bytes.
Types ¶
type BinaryJSON ¶
BinaryJSON represents a binary encoded JSON object. It can be randomly accessed without deserialization.
func CreateBinary ¶
func CreateBinary(in interface{}) BinaryJSON
CreateBinary creates a BinaryJSON from interface.
func MergeBinary ¶
func MergeBinary(bjs []BinaryJSON) BinaryJSON
MergeBinary merges multiple BinaryJSON into one 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 ParseBinaryFromString ¶
func ParseBinaryFromString(s string) (bj BinaryJSON, err error)
ParseBinaryFromString parses a json from string.
func (BinaryJSON) Extract ¶
func (bj BinaryJSON) Extract(pathExprList []PathExpression) (ret BinaryJSON, found bool)
Extract receives several path expressions as arguments, matches them in bj, and returns:
ret: target JSON matched any path expressions. maybe autowrapped as an array. found: true if any path expressions matched.
func (BinaryJSON) GetFloat64 ¶
func (bj BinaryJSON) GetFloat64() float64
GetFloat64 gets the float64 value.
func (BinaryJSON) GetString ¶
func (bj BinaryJSON) GetString() []byte
GetString gets the string value.
func (BinaryJSON) GetUint64 ¶
func (bj BinaryJSON) GetUint64() uint64
GetUint64 gets the uint64 value.
func (BinaryJSON) MarshalJSON ¶
func (bj BinaryJSON) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface.
func (BinaryJSON) Modify ¶
func (bj BinaryJSON) Modify(pathExprList []PathExpression, values []BinaryJSON, mt ModifyType) (retj BinaryJSON, 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 (BinaryJSON) Remove ¶
func (bj BinaryJSON) Remove(pathExprList []PathExpression) (BinaryJSON, error)
Remove removes the elements indicated by pathExprList from JSON.
func (BinaryJSON) String ¶
func (bj BinaryJSON) String() string
String implements fmt.Stringer interface.
func (BinaryJSON) Type ¶
func (bj BinaryJSON) Type() string
Type returns type of BinaryJSON as string.
func (*BinaryJSON) UnmarshalJSON ¶
func (bj *BinaryJSON) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaler interface.
func (BinaryJSON) Unquote ¶
func (bj BinaryJSON) 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 )