You've already forked json-iterator
mirror of
https://github.com/json-iterator/go.git
synced 2025-06-18 22:57:33 +02:00
add MustBeValid to Any
This commit is contained in:
@ -9,6 +9,7 @@ import (
|
|||||||
type Any interface {
|
type Any interface {
|
||||||
LastError() error
|
LastError() error
|
||||||
ValueType() ValueType
|
ValueType() ValueType
|
||||||
|
MustBeValid() Any
|
||||||
ToBool() bool
|
ToBool() bool
|
||||||
ToInt() int
|
ToInt() int
|
||||||
ToInt32() int32
|
ToInt32() int32
|
||||||
@ -218,15 +219,21 @@ func locatePath(iter *Iterator, path []interface{}) Any {
|
|||||||
switch pathKey := pathKeyObj.(type) {
|
switch pathKey := pathKeyObj.(type) {
|
||||||
case string:
|
case string:
|
||||||
valueBytes := locateObjectField(iter, pathKey)
|
valueBytes := locateObjectField(iter, pathKey)
|
||||||
|
if valueBytes == nil {
|
||||||
|
return newInvalidAny(path[i:])
|
||||||
|
}
|
||||||
iter.ResetBytes(valueBytes)
|
iter.ResetBytes(valueBytes)
|
||||||
case int:
|
case int:
|
||||||
valueBytes := locateArrayElement(iter, pathKey)
|
valueBytes := locateArrayElement(iter, pathKey)
|
||||||
|
if valueBytes == nil {
|
||||||
|
return newInvalidAny(path[i:])
|
||||||
|
}
|
||||||
iter.ResetBytes(valueBytes)
|
iter.ResetBytes(valueBytes)
|
||||||
case int32:
|
case int32:
|
||||||
if '*' == pathKey {
|
if '*' == pathKey {
|
||||||
return iter.readAny().Get(path[i:]...)
|
return iter.readAny().Get(path[i:]...)
|
||||||
} else {
|
} else {
|
||||||
return newInvalidAny(path)
|
return newInvalidAny(path[i:])
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return newInvalidAny(path[i:])
|
return newInvalidAny(path[i:])
|
||||||
@ -236,4 +243,4 @@ func locatePath(iter *Iterator, path []interface{}) Any {
|
|||||||
return &invalidAny{baseAny{}, iter.Error}
|
return &invalidAny{baseAny{}, iter.Error}
|
||||||
}
|
}
|
||||||
return iter.readAny()
|
return iter.readAny()
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,10 @@ func (any *arrayLazyAny) ValueType() ValueType {
|
|||||||
return Array
|
return Array
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *arrayLazyAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *arrayLazyAny) LastError() error {
|
func (any *arrayLazyAny) LastError() error {
|
||||||
return any.err
|
return any.err
|
||||||
}
|
}
|
||||||
@ -182,6 +186,10 @@ func (any *arrayAny) ValueType() ValueType {
|
|||||||
return Array
|
return Array
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *arrayAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *arrayAny) LastError() error {
|
func (any *arrayAny) LastError() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,10 @@ func (any *trueAny) ValueType() ValueType {
|
|||||||
return Bool
|
return Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *trueAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
type falseAny struct {
|
type falseAny struct {
|
||||||
baseAny
|
baseAny
|
||||||
}
|
}
|
||||||
@ -127,3 +131,7 @@ func (any *falseAny) GetInterface() interface{} {
|
|||||||
func (any *falseAny) ValueType() ValueType {
|
func (any *falseAny) ValueType() ValueType {
|
||||||
return Bool
|
return Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *falseAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
@ -18,6 +18,10 @@ func (any *floatAny) ValueType() ValueType {
|
|||||||
return Number
|
return Number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *floatAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *floatAny) LastError() error {
|
func (any *floatAny) LastError() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ func (any *int32Any) ValueType() ValueType {
|
|||||||
return Number
|
return Number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *int32Any) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *int32Any) ToBool() bool {
|
func (any *int32Any) ToBool() bool {
|
||||||
return any.val != 0
|
return any.val != 0
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ func (any *int64Any) ValueType() ValueType {
|
|||||||
return Number
|
return Number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *int64Any) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *int64Any) ToBool() bool {
|
func (any *int64Any) ToBool() bool {
|
||||||
return any.val != 0
|
return any.val != 0
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,11 @@ func (any *invalidAny) ValueType() ValueType {
|
|||||||
return Invalid
|
return Invalid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *invalidAny) MustBeValid() Any {
|
||||||
|
panic(any.err)
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *invalidAny) ToBool() bool {
|
func (any *invalidAny) ToBool() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,10 @@ func (any *nilAny) ValueType() ValueType {
|
|||||||
return Nil
|
return Nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *nilAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *nilAny) ToBool() bool {
|
func (any *nilAny) ToBool() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,10 @@ func (any *numberLazyAny) ValueType() ValueType {
|
|||||||
return Number
|
return Number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *numberLazyAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *numberLazyAny) LastError() error {
|
func (any *numberLazyAny) LastError() error {
|
||||||
return any.err
|
return any.err
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,10 @@ func (any *objectLazyAny) ValueType() ValueType {
|
|||||||
return Object
|
return Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *objectLazyAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *objectLazyAny) LastError() error {
|
func (any *objectLazyAny) LastError() error {
|
||||||
return any.err
|
return any.err
|
||||||
}
|
}
|
||||||
@ -195,6 +199,10 @@ func (any *objectAny) ValueType() ValueType {
|
|||||||
return Object
|
return Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *objectAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *objectAny) Parse() *Iterator {
|
func (any *objectAny) Parse() *Iterator {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -346,6 +354,10 @@ func (any *mapAny) ValueType() ValueType {
|
|||||||
return Object
|
return Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *mapAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *mapAny) Parse() *Iterator {
|
func (any *mapAny) Parse() *Iterator {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,10 @@ func (any *stringAny) ValueType() ValueType {
|
|||||||
return String
|
return String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *stringAny) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *stringAny) LastError() error {
|
func (any *stringAny) LastError() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ func (any *uint32Any) ValueType() ValueType {
|
|||||||
return Number
|
return Number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *uint32Any) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *uint32Any) ToBool() bool {
|
func (any *uint32Any) ToBool() bool {
|
||||||
return any.val != 0
|
return any.val != 0
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ func (any *uint64Any) ValueType() ValueType {
|
|||||||
return Number
|
return Number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (any *uint64Any) MustBeValid() Any {
|
||||||
|
return any
|
||||||
|
}
|
||||||
|
|
||||||
func (any *uint64Any) ToBool() bool {
|
func (any *uint64Any) ToBool() bool {
|
||||||
return any.val != 0
|
return any.val != 0
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user