shell 使用JQ解析带单引号的json [已关闭]

6l7fqoea  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(142)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

5天前关闭。
Improve this question
下面的代码工作正常

echo '{"deploy_target": ["dev"]}' | jq

echo '{'deploy_target': ['dev']}' | jq

给出jq: parse error: Invalid numeric literal at line 1, column 15
我正在获取'{'deploy_target': ['dev']}'作为变量shell脚本。我如何用jq解析它?

gab6jxml

gab6jxml1#

请注意,您需要在echo中的字符串周围使用双引号,以便shell将整个字符串解析为一个字符串,然后您需要tr将单引号替换为双引号,以便jq接收有效的JSON。

§ echo "{'deploy_target': ['dev']}" | tr "'" '"' | jq
{
  "deploy_target": [
    "dev"
  ]
}

注意,这是一个非常粗糙的方法。这可能会失败(例如,如果其中一个JSON属性值中已经有一个双引号),因此,正如对这个答案和问题的评论中所讨论的那样,最好发出有效的JSON以馈送到jq

相关问题