Files
go-utils/utils/json.go
兔子 79b1a99e6c v1.0.5
v1.0.5
2023-04-11 13:04:20 +08:00

44 lines
951 B
Go

package utils
import (
"fmt"
json "github.com/json-iterator/go"
"github.com/spf13/cast"
"strings"
)
// JsonEncode 编码
func JsonEncode(data any) (result string) {
text, err := json.Marshal(data)
return Ternary(err != nil, "", string(text))
}
// JsonDecode 解码
func JsonDecode(data any) (result any) {
err := json.Unmarshal([]byte(cast.ToString(data)), &result)
return Ternary(err != nil, nil, result)
}
// JsonGet 获取json中的值 - 支持多级
func JsonGet(jsonString any, key any) (result any, err error) {
if err := json.Unmarshal([]byte(cast.ToString(jsonString)), &result); err != nil {
return nil, err
}
keys := strings.Split(cast.ToString(key), ".")
for _, key := range keys {
object, ok := result.(map[string]any)
if !ok {
return nil, fmt.Errorf("invalid key: %v", key)
}
val, ok := object[key]
if !ok {
return nil, fmt.Errorf("key not found: %v", key)
}
result = val
}
return result, nil
}