在 Unix 中将 json 作为命令行参数传递

sa_*_*uin 2 c c++ unix json getopt

我正在尝试将 json 字符串作为命令行参数传递给 Unix 环境中的 C++ 应用程序。

.\SampleApp -j {\"speed\":\"15\",\"rpm\":\"100\",\"loc\":[\"-83.11\",\"42.11\"]}
Run Code Online (Sandbox Code Playgroud)

我在示例应用程序中使用 getopt() 函数来解析参数。在输出处我只收到速度:15。但是当我运行应用程序时

.\SampleApp -j \"speed\":\"15\",\"rpm\":\"100\",\"loc\":[\"-83.11\",\"42.11\"]
Run Code Online (Sandbox Code Playgroud)

有用。我的问题是如何将带有大括号的 json 字符串正确传递给应用程序。我尝试使用转义序列,\{但它不起作用。

das*_*h-o 5

通常,当文本有双引号时使用单引号更容易

./SampleApp -j '{"speed":"15","rpm":"100","loc":["-83.11","42.11"]}'
Run Code Online (Sandbox Code Playgroud)

或者为了可读性而分多行:

./SampleApp -j '
{
    "speed":"15",
    "rpm":"100",
    "loc":["-83.11","42.11"]
}'
Run Code Online (Sandbox Code Playgroud)