Flutter 如何在VSCode launcher.json命令中转义作为args传递的json中的逗号?
我想调试一个应用程序,需要将一个内嵌的json作为arg传递。 我做了以下工作:Flutter 如何在VSCode launcher.json命令中转义作为args传递的json中的逗号?,flutter,visual-studio-code,vscode-debugger,Flutter,Visual Studio Code,Vscode Debugger,我想调试一个应用程序,需要将一个内嵌的json作为arg传递。 我做了以下工作: "configurations": [ { "name": "app DEV", "program": "lib/main.dart", "request": "launch",
"configurations": [
{
"name": "app DEV",
"program": "lib/main.dart",
"request": "launch",
"type": "dart",
"args": [
"--dart-define=APP_BACKENDS={[{\"id\":\"default\",\"url\":\"https://localhost\",\"port\": \"8080\"},]}",
]
}
但是APP_BACKENDS const值在第一个逗号中被去除。锁定它的打印:{[{“id”:“default”
我只是想说清楚,这就是我获取打印值的方式:
static const _APP_BACKENDS =
String.fromEnvironment('APP_BACKENDS', defaultValue: '{}');
阅读本文档后:,特别是 ,我知道,你需要使用
\\\\\
来实现你想要的。例如,在文档中只给出了这一点
要在程序启动时传递给程序的命令行参数的JSON数组。例如[“arg1”,“arg2”]
。如果要转义字符,则需要对其进行双重转义。例如,[“{\\\\”arg1\\\”:true}]
将{arg1:true}
发送到应用程序
因此,在看了这个之后,您必须以适当的格式将JSON传递给args
args: [
"--dart-define=APP_BACKENDS={[{\\\"id\\\":\\\"default\\\",\\\"url\\\":\\\"https://localhost\\\",\\\"port\\\": \\\"8080\\\"}]}"
]
这将完成您的工作!我遇到了同样的问题-尝试将json字符串作为命令行参数传递给python脚本。在shell中可以正常工作,但在launch中无法执行相同的操作。json.VS代码将逗号解释为多个参数,并将多个
-b
参数传递到我的程序中(在我的案例中,4个独立的-b
参数)
答:在arg值的末尾添加空格“”
我不明白为什么会这样,但确实如此。注意,我是单斜杠,而不是双引号
{
“名称”:“测试我的python代码”,
“类型”:“python”,
“请求”:“启动”,
“程序”:“${file}”,
“args”:[
“-r=/store/purchase”,
“-b={\'items\':[\'cake\',\'coffee\',\'touch comble\',\'masks\']}”
],
“控制台”:“集成终端”
},
是否也尝试转义逗号?尝试删除端口定义后的空格,现在字符串将用转义“
@limido,是的…编辑器没有accept@rioV8,删除空格没有区别在JSON中不能将数组作为对象键:{[]}
在文档中的什么地方可以这样定义自己的变量?{“类型”:“节点”、“请求”:“启动”、“名称”:“启动程序”、“程序”:“${workspaceFolder}/app.js”、“cwd”:“${workspaceFolder}”、“参数”:[“${env:USERNAME}”]}
@riov8这些不是用户定义的变量。我只是想知道它是否有效@rioV8@CristianoAlok正在他的评论中编写JavaScript,在那里不需要转义就可以证实这一点。虽然,对于我传入一个包含多个键、值对的字典的情况,我不得不在字典的开头加一个空格我也是。