refactor(common):优化JSON清理和签名生成逻辑
- 移除多余的json.Marshal调用,直接传递结构体给签名函数 - 修改CleanJSON函数返回类型从string改为[]byte - 更新日志输出格式,使用%+v显示完整结构体内容 - 简化请求数据处理流程,提高代码可读性 - 修复潜在的JSON序列化性能问题menu v1.0.11
parent
adabb186f0
commit
02cab5fbde
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"fmt"
|
"fmt"
|
||||||
ran "math/rand"
|
ran "math/rand"
|
||||||
|
|
@ -101,14 +100,9 @@ func (c *Client[T]) DoRequest(url string, reqData interface{}) (*T, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("清理JSON空值失败: %v", err)
|
return nil, fmt.Errorf("清理JSON空值失败: %v", err)
|
||||||
}
|
}
|
||||||
g.Log().Infof(c.ctx, "清理后的json: %s", reqJson)
|
g.Log().Infof(c.ctx, "清理后的json: %+v", reqJson)
|
||||||
// 序列化为JSON
|
|
||||||
jsonData, err := json.Marshal(reqJson)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("序列化请求数据失败: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
auth, err := c.generateSign(jsonData)
|
auth, err := c.generateSign(reqJson)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("生成签名失败: %v", err)
|
return nil, fmt.Errorf("生成签名失败: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -119,5 +113,5 @@ func (c *Client[T]) DoRequest(url string, reqData interface{}) (*T, error) {
|
||||||
}
|
}
|
||||||
// 设置其他必要的请求头
|
// 设置其他必要的请求头
|
||||||
|
|
||||||
return utils.NewClient[T](jsonData, url, header).Post(c.ctx)
|
return utils.NewClient[T](reqJson, url, header).Post(c.ctx)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// CleanJSON 清理JSON字符串中的空值和0值字段
|
// CleanJSON 清理JSON字符串中的空值和0值字段
|
||||||
func CleanJSON(jsonStr string) (string, error) {
|
func CleanJSON(jsonStr string) ([]byte, error) {
|
||||||
var data interface{}
|
var data interface{}
|
||||||
|
|
||||||
// 解析JSON字符串
|
// 解析JSON字符串
|
||||||
if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {
|
if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {
|
||||||
return "", err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 递归清理数据
|
// 递归清理数据
|
||||||
|
|
@ -20,10 +20,10 @@ func CleanJSON(jsonStr string) (string, error) {
|
||||||
// 转换回JSON字符串
|
// 转换回JSON字符串
|
||||||
result, err := json.Marshal(cleaned)
|
result, err := json.Marshal(cleaned)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return string(result), nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// cleanData 递归清理map或slice中的空值和0值
|
// cleanData 递归清理map或slice中的空值和0值
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue