restructurando el codigo para actualizar los packs con la nueva arquitectura del builder

master
DEV 2 years ago
parent 5da4029132
commit 5c35fe0555

@ -63,7 +63,11 @@ func (b *Builder) Pack (value any) rsls.Bytes {
func (b *Builder) Any (value any) {
if value == nil {
b.null()
if !b.preValue() {
return
}
b.B.W(cjson.G.NullValue)
b.postValue()
return
}
@ -205,11 +209,11 @@ func (b *Builder) Any (value any) {
})
case reflect.Value:
packReflected(v.Type())(b,v)
g.rpackers.getRPacker(v.Type())(b,v)
default:
rv := reflect.ValueOf(value)
packReflected(rv.Type())(b,rv)
g.rpackers.getRPacker(rv.Type())(b,rv)
}
@ -337,14 +341,6 @@ func (b *Builder) Marshaller (value json.Marshaler) {
}
func (b *Builder) null () {
if !b.preValue() {
return
}
b.B.W(cjson.G.NullValue)
b.postValue()
}
func (b *Builder) writeString (value string, flags apack.Flags) {
if len(value) == 0 {

@ -25,6 +25,7 @@
package pkj
import (
"apack"
"blds"
"cdcs/cjson"
"encoding/json"
@ -147,11 +148,24 @@ func (p *rpackers) buildRPacker (rtype reflect.Type) rPackFnc {
return
}
b.B.W(cjson.G.NullValue)
b.postValue()
return
}
packReflected(v.Elem().Type())(b,v.Elem())
p.getRPacker(v.Elem().Type())(b,v.Elem())
}
case reflect.Slice,
reflect.Array :
case reflect.Map :
case reflect.Struct :
default:
return func(b *Builder, v reflect.Value) {
b.SetError(apack.G.ErrInvalidValue) }
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.