【问题标题】:Open JSON file locally with JQ使用 JQ 在本地打开 JSON 文件
【发布时间】:2021-08-11 07:45:57
【问题描述】:

我在搞乱 jq 并打开 json 文件。

我正在开发一个小型解析器。 到目前为止,我已经使用(用于测试目的)一个 api,从中我得到了 JSON(通过 curl -s)。

curl -s 'https://api.npoint.io/c..fc22' > whitelist_tmp.json
whitelist="cat whitelist_tmp.json"

现在我想从我的脚本所在的本地目录导入完全相同的 JSON,但我相信我犯了一个错误。 我创建了一个名为 whitelist.json 的新文件,位于同一文件夹中。

jq -s . whitelist.json > whitelist_tmp.json
whitelist="cat whitelist_tmp.json"

#Parser part
ruleId=($($whitelist | jq -r '.[].ruleId'))
alert=($($whitelist | jq -r '.[].alertName'))

【问题讨论】:

  • @Shawn 有趣的是白名单的内容是正确的。 json在那里。问题是接下来的JQ命令有些麻烦:annot index array with string "ruleId"
  • 如果至少对其中包含的内容有一个模糊的概念,我们就无法告诉您什么是正确的。该错误表示您没有具有该名称的元素,但我们不知道您有哪些元素,或者它们的结构,或者您期望从这些查询中得到什么样的输出。
  • 您现在在几个问题中重复了反模式whitelist="cat whitelist_tmp.json"。您真的不想将命令存储在变量中。答案here 显示了正确的惯用方式。

标签: json bash shell parsing jq


【解决方案1】:

-s 命令行选项会更改 JSON(本质上,它将原始 JSON 包装在一个数组中),这很可能是您的问题的根源。尝试省略它。

【讨论】:

  • 这正是问题所在,谢谢 :)
猜你喜欢
  • 1970-01-01
  • 2019-02-27
  • 2015-10-18
  • 2018-05-15
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多