linux,windows命令行中含有Json字符串如何转义

下面的三个示例命令行中,--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

解决方法参照:https://www.it1352.com/1534847.html

你可能感兴趣的:(专业踩坑)