Files
tyc-server/pkg/lzkit/lzUtils/json.go

57 lines
1.1 KiB
Go
Raw Normal View History

package lzUtils
2025-08-06 21:29:35 +08:00
import (
"encoding/json"
"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
}
}
2025-08-06 21:29:35 +08:00
// ParseJsonResponse 直接解析JSON响应数据
// jsonResp: JSON响应数据
// Returns: 解析后的数据字节数组
func ParseJsonResponse(jsonResp []byte) ([]byte, error) {
parseResult, err := RecursiveParse(string(jsonResp))
if err != nil {
return nil, err
}
resultResp, marshalErr := json.Marshal(parseResult)
if marshalErr != nil {
return nil, err
}
return resultResp, nil
}