From 02cab5fbdede33d2ff11b700ab59d0d412d615ba Mon Sep 17 00:00:00 2001 From: maguodong Date: Thu, 16 Oct 2025 16:05:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor(common):=E4=BC=98=E5=8C=96JSON?= =?UTF-8?q?=E6=B8=85=E7=90=86=E5=92=8C=E7=AD=BE=E5=90=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除多余的json.Marshal调用,直接传递结构体给签名函数 - 修改CleanJSON函数返回类型从string改为[]byte - 更新日志输出格式,使用%+v显示完整结构体内容 - 简化请求数据处理流程,提高代码可读性 - 修复潜在的JSON序列化性能问题 --- lklsdk/common/client.go | 12 +++--------- lklsdk/common/json_cleaner.go | 8 ++++---- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/lklsdk/common/client.go b/lklsdk/common/client.go index 3ddc7c5..0bb4cd2 100644 --- a/lklsdk/common/client.go +++ b/lklsdk/common/client.go @@ -8,7 +8,6 @@ import ( "crypto/sha256" "crypto/x509" "encoding/base64" - "encoding/json" "encoding/pem" "fmt" ran "math/rand" @@ -101,14 +100,9 @@ func (c *Client[T]) DoRequest(url string, reqData interface{}) (*T, error) { if err != nil { return nil, fmt.Errorf("清理JSON空值失败: %v", err) } - g.Log().Infof(c.ctx, "清理后的json: %s", reqJson) - // 序列化为JSON - jsonData, err := json.Marshal(reqJson) - if err != nil { - return nil, fmt.Errorf("序列化请求数据失败: %v", err) - } + g.Log().Infof(c.ctx, "清理后的json: %+v", reqJson) - auth, err := c.generateSign(jsonData) + auth, err := c.generateSign(reqJson) if err != nil { 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) } diff --git a/lklsdk/common/json_cleaner.go b/lklsdk/common/json_cleaner.go index 33d46c9..d3735af 100644 --- a/lklsdk/common/json_cleaner.go +++ b/lklsdk/common/json_cleaner.go @@ -6,12 +6,12 @@ import ( ) // CleanJSON 清理JSON字符串中的空值和0值字段 -func CleanJSON(jsonStr string) (string, error) { +func CleanJSON(jsonStr string) ([]byte, error) { var data interface{} // 解析JSON字符串 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字符串 result, err := json.Marshal(cleaned) if err != nil { - return "", err + return nil, err } - return string(result), nil + return result, nil } // cleanData 递归清理map或slice中的空值和0值