1
0
mirror of https://github.com/json-iterator/go.git synced 2025-06-15 22:50:24 +02:00

implement Any WriteTo

This commit is contained in:
Tao Wen
2017-01-26 14:56:31 +08:00
parent 9b587c0f22
commit 4d7e181f9f
10 changed files with 38 additions and 9 deletions

View File

@ -95,7 +95,7 @@ func (any *arrayLazyAny) fillCache() {
}
func (any *arrayLazyAny) LastError() error {
return nil
return any.err
}
func (any *arrayLazyAny) ToBool() bool {
@ -156,7 +156,15 @@ func (any *arrayLazyAny) ToFloat64() float64 {
}
func (any *arrayLazyAny) ToString() string {
return ""
if len(any.remaining) == len(any.buf) {
// nothing has been parsed yet
return *(*string)(unsafe.Pointer(&any.buf))
} else {
any.fillCache()
str, err := MarshalToString(any.cache)
any.err = err
return str
}
}
func (any *arrayLazyAny) Get(path ...interface{}) Any {
@ -252,7 +260,7 @@ func (any *arrayLazyAny) SetArray(newList []Any) bool {
func (any *arrayLazyAny) WriteTo(stream *Stream) {
if len(any.remaining) == len(any.buf) {
// nothing has been parsed yet
stream.WriteRaw(*(*string)(unsafe.Pointer(&any.buf)))
stream.Write(any.buf)
} else {
any.fillCache()
stream.WriteVal(any.cache)