You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	add MustBeValid to Any
This commit is contained in:
		| @@ -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 | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user