1
0
mirror of https://github.com/json-iterator/go.git synced 2025-07-06 23:37:39 +02:00

remove GetObject & GetArray from Any

This commit is contained in:
Tao Wen
2017-07-09 16:15:45 +08:00
parent f0487718f6
commit db3f5046d7
4 changed files with 18 additions and 97 deletions

View File

@ -81,10 +81,9 @@ func (any *objectLazyAny) Get(path ...interface{}) Any {
valueBytes := locateObjectField(iter, firstPath)
if valueBytes == nil {
return newInvalidAny(path)
} else {
iter.ResetBytes(valueBytes)
return locatePath(iter, path[1:])
}
iter.ResetBytes(valueBytes)
return locatePath(iter, path[1:])
case int32:
if '*' == firstPath {
mappedAll := map[string]Any{}
@ -98,9 +97,8 @@ func (any *objectLazyAny) Get(path ...interface{}) Any {
return true
})
return wrapMap(mappedAll)
} else {
return newInvalidAny(path)
}
return newInvalidAny(path)
default:
return newInvalidAny(path)
}
@ -130,17 +128,6 @@ func (any *objectLazyAny) Size() int {
return size
}
func (any *objectLazyAny) GetObject() map[string]Any {
asMap := map[string]Any{}
iter := any.cfg.BorrowIterator(any.buf)
defer any.cfg.ReturnIterator(iter)
iter.ReadObjectCB(func(iter *Iterator, field string) bool {
asMap[field] = iter.ReadAny()
return true
})
return asMap
}
func (any *objectLazyAny) WriteTo(stream *Stream) {
stream.Write(any.buf)
}
@ -243,9 +230,8 @@ func (any *objectAny) Get(path ...interface{}) Any {
}
}
return wrapMap(mappedAll)
} else {
return newInvalidAny(path)
}
return newInvalidAny(path)
default:
return newInvalidAny(path)
}
@ -263,17 +249,6 @@ func (any *objectAny) Size() int {
return any.val.NumField()
}
func (any *objectAny) GetObject() map[string]Any {
object := map[string]Any{}
for i := 0; i < any.val.NumField(); i++ {
field := any.val.Field(i)
if field.CanInterface() {
object[any.val.Type().Field(i).Name] = Wrap(field.Interface())
}
}
return object
}
func (any *objectAny) WriteTo(stream *Stream) {
stream.WriteVal(any.val)
}
@ -367,9 +342,8 @@ func (any *mapAny) Get(path ...interface{}) Any {
}
}
return wrapMap(mappedAll)
} else {
return newInvalidAny(path)
}
return newInvalidAny(path)
default:
value := any.val.MapIndex(reflect.ValueOf(firstPath))
if !value.IsValid() {
@ -391,16 +365,6 @@ func (any *mapAny) Size() int {
return any.val.Len()
}
func (any *mapAny) GetObject() map[string]Any {
object := map[string]Any{}
for _, key := range any.val.MapKeys() {
keyAsStr := key.String()
element := Wrap(any.val.MapIndex(key).Interface())
object[keyAsStr] = element
}
return object
}
func (any *mapAny) WriteTo(stream *Stream) {
stream.WriteVal(any.val)
}