From 3a1f36930dbb4867623fe35ee477f77461daebb6 Mon Sep 17 00:00:00 2001 From: liubf Date: Thu, 4 Jan 2024 23:32:36 +0800 Subject: [PATCH] fix: use reflect --- go-backend/internal/handler/handler.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/go-backend/internal/handler/handler.go b/go-backend/internal/handler/handler.go index c850bf4..b479c84 100644 --- a/go-backend/internal/handler/handler.go +++ b/go-backend/internal/handler/handler.go @@ -4,6 +4,7 @@ import ( "encoding/json" "log" "net/http" + "reflect" "strings" "v-helper/internal/model" "v-helper/internal/service" @@ -179,16 +180,19 @@ func DecryptionAndBindingMiddleware(targetType interface{}) gin.HandlerFunc { return } - if err := json.Unmarshal([]byte(decryptedData), targetType); err != nil { + // 创建一个新的实例 + newTarget := reflect.New(reflect.TypeOf(targetType).Elem()).Interface() + + if err := json.Unmarshal([]byte(decryptedData), newTarget); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid data format"}) c.Abort() return } log.Println("encryptedRequest:", encryptedRequest) log.Println("decryptedData:", decryptedData) - log.Println("parsedData:", targetType) + log.Println("parsedData:", newTarget) - c.Set("parsedData", targetType) + c.Set("parsedData", newTarget) c.Next() } }