簡體   English   中英

如何在 Hyperledger Fabric 中解組交易有效負載

[英]How to unmarshal Transaction Payload in Hyperledger Fabric

我需要從分類帳中的交易中獲取交易字段。 我能夠通過調用qscc鏈碼成功從賬本查詢交易,但無法解析獲取的交易以檢索交易字段。 我想將交易內容解組為包含所有字段的結構。 使用下面的代碼,我收到錯誤"failed to unmarshal channel header" 感謝你的幫助。

chainCodeArgs := toChaincodeArgs("GetTransactionByID", "myc", tid)
response := stub.InvokeChaincode("qscc", chainCodeArgs, "myc")
fmt.Printf("****************")
if response.Status != shim.OK {
errStr := fmt.Sprintf("Failed to query chaincode. Got error: %s", response.Payload)
fmt.Printf(errStr)
return "", fmt.Errorf(errStr)
}

respStr := fmt.Sprintf("successfully queried qscc chaincode. Got response: %s", response.Payload)
fmt.Printf(respStr)

payload, err := utils.UnmarshalPayload(response.Payload)
if err != nil {
return "", fmt.Errorf("Error when unmarshalling transaction payload response")
}
fmt.Printf("++++++++++++++++++++++")
fmt.Println(payload)

if payload.Header == nil {
return "", fmt.Errorf("error getting txID from header: payload header is nil")
}

chdr, err := utils.UnmarshalChannelHeader(payload.GetHeader().ChannelHeader)
if err != nil {
return "", fmt.Errorf("failed to unmarshal channel header")
}

fmt.Printf("++++++++++++++++++++++")
fmt.Printf(chdr.TxId)

錯誤截圖:

在此處輸入圖片說明

響應負載以 [] 字節為單位

你可以使用string(response.Payload)

上面的代碼等價於 .toString("utf8")

- - - 或者 - - -

var data interface{}

err = json.Unmarshal(responseBody, &data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM