From 11ad997eaa4bb16e0a1e64f967761ed5e1c6a7c6 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Thu, 27 Jul 2023 15:40:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20super=20=E5=8C=85=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=97=A0=E9=94=99=E7=9A=84=20json=20=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/super/json.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 utils/super/json.go diff --git a/utils/super/json.go b/utils/super/json.go new file mode 100644 index 0000000..446f7ea --- /dev/null +++ b/utils/super/json.go @@ -0,0 +1,41 @@ +package super + +import ( + jsonIter "github.com/json-iterator/go" + "reflect" +) + +var json = jsonIter.ConfigCompatibleWithStandardLibrary + +// MarshalJSON 将对象转换为 json +func MarshalJSON(v interface{}) []byte { + b, err := json.Marshal(v) + if err != nil { + switch reflect.TypeOf(v).Kind() { + case reflect.Array, reflect.Slice: + return StringToBytes("[]") + default: + return StringToBytes("{}") + } + } + return b +} + +// UnmarshalJSON 将 json 转换为对象 +func UnmarshalJSON(data []byte, v interface{}) error { + return json.Unmarshal(data, v) +} + +// MarshalIndentJSON 将对象转换为 json +func MarshalIndentJSON(v interface{}, prefix, indent string) []byte { + b, err := json.MarshalIndent(v, prefix, indent) + if err != nil { + switch reflect.TypeOf(v).Kind() { + case reflect.Array, reflect.Slice: + return StringToBytes("[]") + default: + return StringToBytes("{}") + } + } + return b +}