packs2
DEV 3 years ago
parent 0f487f773d
commit a2f1b05159

@ -24,16 +24,32 @@
package main
import (
"activething.com/go/gogo/core/bins"
"actiovething.com/go/gogo/packs/pjson"
"activething.com/go/gogo/core/errs"
"activething.com/go/gogo/packs"
"fmt"
"time"
)
func main() {
b := bins.NewBuffer()
b.WriteTimeStr(time.Now(), time.RFC822Z)
p := pjson.NewBuilder(func (pk *pjson.Builder) {
fmt.Printf("Resultado %s\n", b.Bytes())
})
p.Object(func(b packs.BuilderObject) {
b.Field("0").UInt64(0)
b.Field("1").Date(time.Now())
b.Field("2").String("<html>asdadasd<html>")
})
errs.Test(p.Error())
fmt.Printf("Data \n%s",p.Data())
/*
d,_ := json.Marshal("<html>asdadasd<html>")
fmt.Printf("Data \n%s",d)
*/
}

@ -113,7 +113,7 @@ func (s *BuilderState) Close() bool {
return !s.SetError(G.ErrInvalidNode)
case NodeKindList:
default:
if s.Node.Next != NodePartValue {
if s.Node.Next == NodePartValue {
return !s.SetError(G.ErrInvalidElement)
}
}

@ -60,7 +60,7 @@ var (
func BuildAny(builder Builder, value reflect.Value, def func(value any) error) {
func BuildAny(builder Builder, value any, def func(value any) error) {
switch tp := value.(type) {

@ -82,13 +82,13 @@ func (p *Builder) Reset() {
func (p *Builder) Any (value any) {
switch tp := value.(type) {
switch value.(type) {
case json.Marshaler :
p.state.SetError(p.jsonEncoder().Encode(value))
default:
packs.BuildAny(p ,value,func(v any) error { return p.jsonEncoder().Encode(value) })
})
}
}
@ -167,6 +167,10 @@ func (p *Builder) Int64(value int64) {
}
if value == 0 {
if p.options.IgnoreDefaults() && p.state.Node.Kind == packs.NodeKindObject {
p.state.Truncate(p.state.Len())
return
}
p.state.WriteByte('0')
} else {
p.state.WriteIntStr(value, 10)
@ -210,12 +214,9 @@ func (p *Builder) Complex128(value complex128) {
p.state.WriteByte('"')
}
switch {
case value == 0:
p.state.Write(G.zeroValue)
case cmplx.IsInf(value):
p.state.Write(G.floatInfPos)
case cmplx.IsNaN(value):
p.state.Write(G.floatNaN)
case value == 0 : p.state.Write(G.zeroValue)
case cmplx.IsInf(value): p.state.Write(G.floatInfPos)
case cmplx.IsNaN(value): p.state.Write(G.floatNaN)
default:
r, i := real(value), imag(value)
p.state.WriteByte('"')
@ -333,12 +334,12 @@ func (p *Builder) Item() packs.Builder {
if p.state.Error != nil {
return nil
}
if p.state.Node.Kind != packs.NodeKindList {
p.state.SetError(packs.G.ErrInvalidElement)
return nil
if p.state.Node.Kind == packs.NodeKindList {
p.setSep()
return p
}
p.setSep()
return p
p.state.SetError(packs.G.ErrInvalidElement)
return nil
}
func (p *Builder) Element(key any) packs.Builder {
@ -376,7 +377,7 @@ func (p *Builder) setKey(key string) bool {
}
p.setSep()
//todo key sanitize
p.string(key, p.options.EscapeHTML())
p.string(key)
p.state.WriteByte(':')
return true
}

@ -29,6 +29,7 @@ const (
JSONOptionsEscapeHTML
JSONOptionsIgnoreKeys
JSONOptionsQuoteFloats
JSONOptionsIgnoreDefaults
)
@ -52,3 +53,7 @@ func (o Options) EscapeHTML() bool {
func (o Options) IgnoreKeys() bool {
return o&JSONOptionsIgnoreKeys != 0
}
func (o Options) IgnoreDefaults() bool {
return o&JSONOptionsIgnoreDefaults != 0
}

Loading…
Cancel
Save

Powered by TurnKey Linux.