首页 > 解决方案 > Bash:如何转义字符串以在 JSON 中使用?

问题描述

我的 Bash 脚本有很多变量赋值,它们放在 JSON 文件中:

var='Hello
    "world". 
    This is \anything \or \nothing
'
echo "{ \"var\"= \"$var\" }" > output.json

验证文件时output.jsonjq 说:

$ 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 创建。

标签: jsonbash

解决方案


$var作为原始字符串参数传递,JQ 会自动将其转换为有效的 JSON 字符串。

$ jq -n --arg var "$var" '{$var}'
{
  "var": "Hello\n    \"world\". \n    This is \\anything \\or \\nothing\n"
}

推荐阅读