github.com/mundipagg/tracer-splunk-writer@v1.0.6/json/encoder/map.go (about) 1 package encoder 2 3 import ( 4 "fmt" 5 "github.com/json-iterator/go" 6 "os" 7 "unsafe" 8 ) 9 10 type Map struct { 11 Strategy func(string) string 12 } 13 14 func (enc *Map) IsEmpty(ptr unsafe.Pointer) bool { 15 s := (*string)(ptr) 16 return s == nil || *s == "" 17 } 18 19 func (enc *Map) Encode(ptr unsafe.Pointer, stream *jsoniter.Stream) { 20 beforeBuffer := stream.Buffer() 21 defer func() { 22 err := recover() 23 if err != nil { 24 fmt.Fprintf(os.Stderr, "a error occurred while serialization of 'map', error: '%v'", err) 25 stream.SetBuffer(beforeBuffer) 26 } 27 }() 28 if enc.IsEmpty(ptr) { 29 stream.WriteString("") 30 } else { 31 s := (*string)(ptr) 32 stream.WriteString(enc.Strategy(*s)) 33 } 34 }