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