You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	wrap string
This commit is contained in:
		| @@ -72,6 +72,10 @@ func WrapFloat64(val float64) Any { | ||||
| 	return &floatAny{baseAny{}, val} | ||||
| } | ||||
|  | ||||
| func WrapString(val string) Any { | ||||
| 	return &stringAny{baseAny{}, nil, val} | ||||
| } | ||||
|  | ||||
| func (iter *Iterator) ReadAny() Any { | ||||
| 	return iter.readAny(nil) | ||||
| } | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package jsoniter | ||||
|  | ||||
| import ( | ||||
| 	"io" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| type stringLazyAny struct{ | ||||
| @@ -109,4 +110,80 @@ func (any *stringLazyAny) WriteTo(stream *Stream) { | ||||
| func (any *stringLazyAny) GetInterface() interface{} { | ||||
| 	any.fillCache() | ||||
| 	return any.cache | ||||
| } | ||||
|  | ||||
| type stringAny struct{ | ||||
| 	baseAny | ||||
| 	err   error | ||||
| 	val string | ||||
| } | ||||
|  | ||||
| func (any *stringAny) Parse() *Iterator { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
|  | ||||
| func (any *stringAny) ValueType() ValueType { | ||||
| 	return String | ||||
| } | ||||
|  | ||||
| func (any *stringAny) LastError() error { | ||||
| 	return any.err | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToBool() bool { | ||||
| 	str := any.ToString() | ||||
| 	if str == "false" { | ||||
| 		return false | ||||
| 	} | ||||
| 	for _, c := range str { | ||||
| 		switch c { | ||||
| 		case ' ', '\n', '\r', '\t': | ||||
| 		default: | ||||
| 			return true | ||||
| 		} | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToInt() int { | ||||
| 	parsed, err := strconv.ParseInt(any.val, 10, 64) | ||||
| 	any.err = err | ||||
| 	return int(parsed) | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToInt32() int32 { | ||||
| 	parsed, err := strconv.ParseInt(any.val, 10, 32) | ||||
| 	any.err = err | ||||
| 	return int32(parsed) | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToInt64() int64 { | ||||
| 	parsed, err := strconv.ParseInt(any.val, 10, 64) | ||||
| 	any.err = err | ||||
| 	return parsed | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToFloat32() float32 { | ||||
| 	parsed, err := strconv.ParseFloat(any.val, 32) | ||||
| 	any.err = err | ||||
| 	return float32(parsed) | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToFloat64() float64 { | ||||
| 	parsed, err := strconv.ParseFloat(any.val, 64) | ||||
| 	any.err = err | ||||
| 	return parsed | ||||
| } | ||||
|  | ||||
| func (any *stringAny) ToString() string { | ||||
| 	return any.val | ||||
| } | ||||
|  | ||||
| func (any *stringAny) WriteTo(stream *Stream) { | ||||
| 	stream.WriteString(any.val) | ||||
| } | ||||
|  | ||||
| func (any *stringAny) GetInterface() interface{} { | ||||
| 	return any.val | ||||
| } | ||||
| @@ -79,6 +79,12 @@ func Test_read_string_as_any(t *testing.T) { | ||||
| 	should.Equal(123, any.ToInt()) | ||||
| } | ||||
|  | ||||
| func Test_wrap_string(t *testing.T) { | ||||
| 	should := require.New(t) | ||||
| 	any := WrapString("123") | ||||
| 	should.Equal(123, any.ToInt()) | ||||
| } | ||||
|  | ||||
| func Test_write_string(t *testing.T) { | ||||
| 	should := require.New(t) | ||||
| 	str, err := MarshalToString("hello") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user