在JSON的值内包含双引号的问题


为了能够一键用Autocad运行sublime text内编辑的lisp文件,我设置sublime text的sublime-build时,如下:


 {
    "cmd": ["cmd", "/c","echo (load ${file_base_name})>load.scr" , "&&" , "cmd", "/c", "acad", "/b" , "${file_path}/load.scr"],
    "working_dir": "${file_path}",
    "selector": "source.lsp",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)"
}

大意是:
先在文件目录下创建一个load.scr(Autocad的脚本文件),为了能够让Autocad打开时能够自动加载当前lsp文件(这似乎有点绕,但是这是我唯一知道的能够在cmd打开autocad并且附带参数的方法)
其中load.scr文件的正确内容应该为


 (load "xxx.lsp")

这里load后面的文件名包含了双引号,但是直接在上面加上双引号不符合JSON的规范导致sublime text运行不能,如下(注意${file_base_name}外面加了一对双括号):


 {
    "cmd": ["cmd", "/c","echo (load "${file_base_name}")>load.scr" , "&&" , "cmd", "/c", "acad", "/b" , "${file_path}/load.scr"],
......
}

之后用转义符/",发现sublime text可以运行,但是在load.scr里面却变成了:


 (load \"xxx.lsp\")

多了两个尴尬的 \ ,导致在autocad里面不能成功加载

不知道有没有办法,能够解决这个双引号转义的问题,谢谢!

json cmd sublime-text dos lisp

D.boy 10 years ago

Your Answer