mirror of
https://github.com/unti-io/go-utils.git
synced 2025-10-16 13:20:38 +08:00
v1.0.3
v1.0.3
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"github.com/goccy/go-json"
|
||||
"fmt"
|
||||
json "github.com/json-iterator/go"
|
||||
"github.com/spf13/cast"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// JsonEncode 编码
|
||||
@@ -21,3 +24,27 @@ func JsonDecode(data string) (result any) {
|
||||
}
|
||||
return 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
|
||||
}
|
Reference in New Issue
Block a user