Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
b5a9eb2ccc
@ -134,6 +134,47 @@ func (encoder *sortKeysMapEncoder) Encode(ptr unsafe.Pointer, w codecore.IWriter
|
|||||||
w.PutReader(subIter)
|
w.PutReader(subIter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *sortKeysMapEncoder) EncodeToMapJson(ptr unsafe.Pointer, w codecore.IWriter) (ret map[string]string, err error) {
|
||||||
|
ret = make(map[string]string)
|
||||||
|
var (
|
||||||
|
k, v string
|
||||||
|
)
|
||||||
|
keystream := w.GetWriter()
|
||||||
|
elemstream := w.GetWriter()
|
||||||
|
defer func() {
|
||||||
|
w.PutWriter(keystream)
|
||||||
|
w.PutWriter(elemstream)
|
||||||
|
}()
|
||||||
|
iter := this.mapType.UnsafeIterate(ptr)
|
||||||
|
for i := 0; iter.HasNext(); i++ {
|
||||||
|
key, elem := iter.UnsafeNext()
|
||||||
|
if this.keyEncoder.GetType() != reflect.String {
|
||||||
|
this.keyEncoder.Encode(key, keystream)
|
||||||
|
if keystream.Error() != nil && keystream.Error() != io.EOF {
|
||||||
|
err = keystream.Error()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
k = BytesToString(keystream.Buffer())
|
||||||
|
} else {
|
||||||
|
k = *((*string)(key))
|
||||||
|
}
|
||||||
|
if this.elemEncoder.GetType() != reflect.String {
|
||||||
|
this.elemEncoder.Encode(elem, elemstream)
|
||||||
|
if elemstream.Error() != nil && elemstream.Error() != io.EOF {
|
||||||
|
err = elemstream.Error()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
v = BytesToString(elemstream.Buffer())
|
||||||
|
} else {
|
||||||
|
v = *((*string)(elem))
|
||||||
|
}
|
||||||
|
ret[k] = v
|
||||||
|
keystream.Reset()
|
||||||
|
elemstream.Reset()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (encoder *sortKeysMapEncoder) IsEmpty(ptr unsafe.Pointer) bool {
|
func (encoder *sortKeysMapEncoder) IsEmpty(ptr unsafe.Pointer) bool {
|
||||||
iter := encoder.mapType.UnsafeIterate(ptr)
|
iter := encoder.mapType.UnsafeIterate(ptr)
|
||||||
return !iter.HasNext()
|
return !iter.HasNext()
|
||||||
|
Loading…
Reference in New Issue
Block a user