package convutil import ( "bytes" "encoding/json" "strings" ) type UnicodeJsonConvert struct{} func (UnicodeJsonConvert) Enable() bool { return true } func (UnicodeJsonConvert) Decode(str string) (string, bool) { trimedStr := strings.TrimSpace(str) if strings.HasPrefix(trimedStr, "{") && strings.HasSuffix(trimedStr, "}") { var obj map[string]any if err := json.Unmarshal([]byte(trimedStr), &obj); err == nil { var out []byte if out, err = json.MarshalIndent(obj, "", " "); err == nil { return string(out), true } } } else if strings.HasPrefix(trimedStr, "[") && strings.HasSuffix(trimedStr, "]") { var arr []any if err := json.Unmarshal([]byte(trimedStr), &arr); err == nil { var out []byte if out, err = json.MarshalIndent(arr, "", " "); err == nil { return string(out), true } } } return str, false } func (UnicodeJsonConvert) Encode(str string) (string, bool) { var dst bytes.Buffer if err := json.Compact(&dst, []byte(str)); err != nil { return str, false } return dst.String(), true }