下面的三个示例命令行中,--params的参数是json。不同的系统的命令行环境,对json的处理不同。具体示例如下:
- Linux
.\cmc client contract user invoke --contract-name=testTBFT --method=save --sdk-conf-path=.\sdk_config.yml --params="{\"faile_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"6543234\"}" --sync-result=true
整个json体最外侧用双引号包起来,json中的key和value的双引号前面加 \
- Windows dos
.\cmc.exe client contract user invoke --contract-name=testTBFT --method=save --sdk-conf-path=.\sdk_config.yml --params="{"""file_name""":"""name007""","""file_hash""":"""ab3456df5799b87c77e7f88""","""time""":"""6543234"""}" --sync-result=true
windows dos下,json中key和value的双引号需要变成 """ 进行转义
- Windows powershell
.\cmc client contract user invoke --contract-name=testTBFT --method=save --sdk-conf-path=.\sdk_config1.yml --params='{\"faile_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"6543234\"}' --sync-result=true
最特殊的是Windows Powershell,他的json体参数最外层必须用单引号包裹,json体中的key和value的双引号前面加\
如果不这么做,会报如下错误:
Error: invalid character '\\' looking for beginning of object key string