【发布时间】:2017-03-02 02:27:53
【问题描述】:
我正在尝试解析在某些字符串中包含斜杠和反斜杠序列的 json 文件,如下所示:
echo '{"tag_string":"/\/\/\ test"}' | jq
这给了我:
parse error: Invalid escape at line 1, column 27
我尝试在不同位置使用反斜杠进行转义,但似乎找不到正确的方法。如何在不删除任何字符或出现错误的情况下按原样输出字符串?
这仅适用于 bash,但不适用于 sh(或 zsh):
echo '{"tag_string":"/\\/\\/\\ test"}' | jq -r '.tag_string'
/\/\/\ test
【问题讨论】:
-
那么你有没有试过看看
echo返回什么? -
@zerkms 回显没有问题:
{"tag_string":"/\/\/\ test"} -
“没有问题”是什么意思?我的意思是让你得到它的输出并看到它不是有效的 JSON。获取它返回的任何内容并放入任何 JSON 验证器以获取详细信息。
-
@zerkms 我的意思是“没问题”,这就是我想要的最终输出,我已经知道它不是有效的 JSON。 jsonlint 给了我:
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined',我在问这些字符必须如何转义才能没有错误。 -
@ae701 - 您的问题描述非常混乱,因为一方面您表示您有一些“JSON 文件”,但另一方面,您的示例与 shell 问题纠缠在一起。您是否有 JSON 文件,或者您是否正在尝试将一些非 JSON 文件转换为 JSON? ...
标签: json string escaping sh jq