Hyperledger Fabric:对等链代码调用:将 JSON 对象传递给链代码函数?

San*_*epR 2 hyperledger-fabric

我可以通过对等链代码调用来调用链代码功能:

`peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args":["one", "two"]}`
Run Code Online (Sandbox Code Playgroud)

但我想将 javascript 对象作为参数传递,例如:

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

但这会因无效字符 'p' 寻找对象键字符串的开头而失败。我尝试了一些其他排列,但都没有成功。

该文档将 -c 描述为:
-c, --ctor string JSON 格式的链代码的构造函数消息(默认为“{}”)

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

编辑 1:为了完整起见

peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args": [{"property1":"one", "property2":"two"} ]}'
Run Code Online (Sandbox Code Playgroud)

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

R T*_*her 5

我认为您可能正在使用旧格式的 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\"}"]}'