tydata-server/pkg/lzkit/lzUtils/json.go
2025-03-08 20:34:14 +08:00

36 lines
752 B
Go

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
}
}