代码之家  ›  专栏  ›  技术社区  ›  SandeepR

Hyperledger结构:对等链码调用:将JSON对象传递到链码函数?

  •  0
  • SandeepR  · 技术社区  · 6 年前

    我可以通过对等链码调用调用链码功能,如下所示:

    `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 struct field strargs.args(字符串类型)中

    1 回复  |  直到 6 年前
        1
  •  0
  •   R Thatcher    6 年前

    我认为您可能使用了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\"}"]}'