json - Bash:如何转义字符串以在 JSON 中使用?
问题描述
我的 Bash 脚本有很多变量赋值,它们放在 JSON 文件中:
var='Hello
"world".
This is \anything \or \nothing
'
echo "{ \"var\"= \"$var\" }" > output.json
验证文件时output.json
jq 说:
$ cat output.json | jq .
parse error: Invalid numeric literal at line 1, column 9
如何从中制作有效的 JSON 文件?任何\
并且"
应该被保留。
正确的 JSON 字符串是
{ "var": "Hello
\"world\".
This is \\anything \\or \\nothing
" }
我不能修改变量分配,但 JSON 创建。
解决方案
$var
作为原始字符串参数传递,JQ 会自动将其转换为有效的 JSON 字符串。
$ jq -n --arg var "$var" '{$var}'
{
"var": "Hello\n \"world\". \n This is \\anything \\or \\nothing\n"
}
推荐阅读
- corda - 在 Corda 中,附件大小有上限吗?
- c# - 为什么相同的代码在调试和发布版本之间呈现不同的结果
- ffmpeg - 为输出文件 #0 (360p.m3u 8) 指定的编解码器 AVOption b(设置比特率(以比特/秒为单位))尚未用于任何流。
- sql - 计算 X 英里内的点数 SQL
- git - 如何让 GitHub Pages 重新渲染我的 React 应用程序?
- php - php - Codeigniter JSON 额外字符
- java - 如何使用 JUnit 在 Java Spring Boot 中测试移动文件
- angular - Angular,无法解析组件的所有参数
- java - RestTemplate.exchange() - 消息头值中的非法字符
- git - 在`git merge`之后,你如何查看“修改”文件的差异?