我需要从分类帐中的交易中获取交易字段。我可以通过调用 qscc 链码从分类帐中成功查询事务,但是无法解析提取的事务以检索事务字段。我想将交易内容编组为具有所有字段的结构。使用以下代码,我收到错误“无法解组通道标题” 。感谢您的帮助。
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)
错误截图:
答案 0 :(得分:0)
响应有效载荷以[]字节为单位
您可以使用string(response.Payload)
以上代码等效于.toString(“ utf8”)
------或------
使用
var data interface{}
err = json.Unmarshal(responseBody, &data)