From e4e7122a5f50fc502bb5be36483408fbf65c63ea Mon Sep 17 00:00:00 2001 From: SurbhiAgarwal1 Date: Mon, 27 Apr 2026 07:03:58 +0530 Subject: [PATCH] fix(rest-api): handle JSON array in chaincode arguments Signed-off-by: SurbhiAgarwal1 --- asset-transfer-basic/rest-api-go/web/invoke.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/asset-transfer-basic/rest-api-go/web/invoke.go b/asset-transfer-basic/rest-api-go/web/invoke.go index f2907d5814..85325417c8 100644 --- a/asset-transfer-basic/rest-api-go/web/invoke.go +++ b/asset-transfer-basic/rest-api-go/web/invoke.go @@ -1,6 +1,7 @@ package web import ( + "encoding/json" "fmt" "net/http" @@ -18,6 +19,22 @@ func (setup *OrgSetup) Invoke(w http.ResponseWriter, r *http.Request) { channelID := r.FormValue("channelid") function := r.FormValue("function") args := r.Form["args"] + + if len(args) == 1 { + var parsed []string + err := json.Unmarshal([]byte(args[0]), &parsed) + if err == nil { + args = parsed + } else { + fmt.Printf("Warning: failed to parse args as JSON: %s\n", err) + } + } + + if len(args) == 0 { + fmt.Fprintf(w, "Error: args is empty") + return + } + fmt.Printf("channel: %s, chaincode: %s, function: %s, args: %s\n", channelID, chainCodeName, function, args) network := setup.Gateway.GetNetwork(channelID) contract := network.GetContract(chainCodeName)