将链式代码调用的参数作为字节传递

时间:2019-06-12 08:09:11

标签: hyperledger-fabric

调用链码时,有-c选项用于传递参数。据我了解(另请参阅Hyperledger fabric: Error: chaincode argument error: json: cannot unmarshal array into Go struct field strArgs.Args of type string),这些参数需要作为字符串数组传递。 例如:

-c '{"Args":["add", "peter", "6"]}'

有一个GetArgs()函数(https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.GetArgs),它以字节数组的形式返回参数。 在上述情况下,这意味着第三个参数(“ 6”)作为长度为1的字节数组返回,其中第一个条目为54。 但是我想在长度为1的字节数组中以第6个条目(00000110)表示第三个参数(“ 6”)。 完全不可能将字节/数字类型作为参数传递吗?

1 个答案:

答案 0 :(得分:1)

您需要做的是将第三个参数作为json传递,并将其从链码中的字符串取消编组。

    '{"Args": ["add", "peter", "[6]"]}'

然后类似

    var arr []byte
    err := json.Unmarshal(args[2], &arr) // args[2] is the third argument from the list
    fmt.Println(arr)