Files
likedream/internal/utils/json.go
T
2025-07-27 16:35:31 +08:00

50 lines
869 B
Go

package utils
import (
"github.com/bytedance/sonic"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/tidwall/gjson"
"io"
)
func ReadJson[T any](reader io.Reader) T {
defer func() {
if body, ok := reader.(io.ReadCloser); ok {
err := body.Close()
if err != nil {
g.Log().Errorf(gctx.GetInitCtx(), "cannot close reader: %+v", err)
}
}
}()
jsonBytes, err := io.ReadAll(reader)
OkOrPanic(err)
var ret T
err = sonic.Unmarshal(jsonBytes, &ret)
OkOrPanic(err)
return ret
}
func ReadGjsonResult(reader io.Reader) gjson.Result {
defer func() {
if body, ok := reader.(io.ReadCloser); ok {
err := body.Close()
if err != nil {
g.Log().Errorf(gctx.GetInitCtx(), "cannot close reader: %+v", err)
}
}
}()
jsonBytes, err := io.ReadAll(reader)
OkOrPanic(err)
return gjson.ParseBytes(jsonBytes)
}