v1.2.4z template (clean feature not done)
This commit is contained in:
35
pkg/lzkit/lzUtils/json.go
Normal file
35
pkg/lzkit/lzUtils/json.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package lzUtils
|
||||
|
||||
import "github.com/bytedance/sonic"
|
||||
|
||||
func RecursiveParse(data interface{}) (interface{}, error) {
|
||||
switch v := data.(type) {
|
||||
case string:
|
||||
// 尝试解析字符串是否为嵌套 JSON
|
||||
var parsed interface{}
|
||||
if err := sonic.Unmarshal([]byte(v), &parsed); err == nil {
|
||||
return RecursiveParse(parsed)
|
||||
}
|
||||
return v, nil // 普通字符串直接返回
|
||||
case map[string]interface{}:
|
||||
for key, val := range v {
|
||||
parsed, err := RecursiveParse(val)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
v[key] = parsed
|
||||
}
|
||||
return v, nil
|
||||
case []interface{}:
|
||||
for i, item := range v {
|
||||
parsed, err := RecursiveParse(item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
v[i] = parsed
|
||||
}
|
||||
return v, nil
|
||||
default:
|
||||
return v, nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user