good morning!!!!

Skip to content
Snippets Groups Projects
Verified Commit 9dfe16e1 authored by a's avatar a
Browse files

a

parent ef620627
Branches
Tags
No related merge requests found
Pipeline #60425 passed
......@@ -2,6 +2,7 @@ package jjson
import (
"bytes"
"encoding/json"
"io"
jsoniter "github.com/json-iterator/go"
......@@ -29,26 +30,48 @@ func MarshalAndEncode(w io.Writer, v any) error {
func Encode(w io.Writer, v any) error {
s := jConfig.BorrowStream(w)
defer jConfig.ReturnStream(s)
switch cast := (v).(type) {
case func(e *jsoniter.Stream):
cast(s)
return s.Flush()
case json.Marshaler:
s.WriteVal(v)
return s.Flush()
case io.Reader:
_, err := io.Copy(w, cast)
if err != nil {
return err
}
return nil
default:
s.WriteVal(v)
return s.Flush()
}
}
func Decode(r io.Reader, v any) error {
d := jConfig.NewDecoder(r)
switch cast := (v).(type) {
case json.Unmarshaler:
return d.Decode(v)
case io.Writer:
_, err := io.Copy(cast, r)
if err != nil {
return err
}
return nil
default:
return d.Decode(v)
}
}
func Unmarshal(xs []byte, v any) error {
d := jConfig.NewDecoder(bytes.NewBuffer(xs))
return d.Decode(v)
return Decode(bytes.NewBuffer(xs), v)
}
func Marshal(v any) ([]byte, error) {
out := &bytes.Buffer{}
s := jConfig.BorrowStream(out)
defer jConfig.ReturnStream(s)
s.WriteVal(v)
err := s.Flush()
err := Encode(out, v)
if err != nil {
return nil, err
}
......
......@@ -31,14 +31,6 @@ func EncodeObject(wr io.Writer, dat any) error {
}
}
return nil
case json.Marshaler:
return jjson.Encode(wr, cast)
case io.Reader:
_, err := io.Copy(wr, cast)
if err != nil {
return err
}
return nil
default:
return jjson.Encode(wr, cast)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment