Hyperledger Fabric:对等链码调用:将JSON对象传递给链码功能?

时间:2019-01-16 09:33:43

标签: hyperledger-fabric

我能够通过对等链代码调用方式调用链代码功能:

`peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args":["one", "two"]}`

但是我想将javascript对象作为参数传递:

`peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args":[ {property1:"one"}, {property2:"two"}]}`  

但这失败,因为无效字符'p'寻找对象关键字字符串的开头。我尝试了其他几种排列方式,但都没有成功。

文档将-c表示为:
-c,--ctor字符串JSON格式的链代码的构造函数消息(默认为“ {}”)

可以告诉正确的语法来传递对象。

编辑1: 为了完整起见

peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args": [{"property1":"one", "property2":"two"} ]}'

返回错误:Chaincode参数错误:json:无法将数组解组为字符串类型的Go结构字段strArgs.Args

1 个答案:

答案 0 :(得分:1)

我认为您可能使用了旧格式的invoke命令,所以我建议使用这样的新格式,其中包括字符串化的JSON对象:

peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"Args":["initLedger","{\"property1\":\"one\",\"property2\":\"two\"}"]}'

但是,如果您需要使用格式,那么也许:

peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger", "Args": ["{\"property1\":\"one\",\"property2\":\"two\"}"]}'