jq:错误:无法迭代字符串

2024-04-28

有人可以解释一下下面的警告吗?

输入文件是:

{
 "env": "DC",
 "hosts" :
[
{
  "apt_update_last_success": "1495991703",
  "architecture": "amd64",
  "hostname": "h1"
},
{
  "apt_update_last_success": "1495991703",
  "architecture": "amd64",
  "hostname": "h2"
},
{
  "apt_update_last_success": "1496045706",
  "architecture": "amd64",
  "hostname": "h3"
},
{
  "apt_update_last_success": "1496045705",
  "architecture": "amd64",
  "hostname": "h4"
},
{
  "apt_update_last_success": "1496049305",
  "architecture": "amd64",
  "hostname": "h5"
},
{
  "apt_update_last_success": "1496049307",
  "architecture": "amd64",
  "hostname": "h6"
}
]
}

jq 命令返回预期的结果,但也打印警告我不知道为什么:

$ jq -r '.[][] | select(.hostname=="h6")' ddd.json
jq: error: Cannot iterate over string
{
  "apt_update_last_success": "1496049307",
  "architecture": "amd64",
  "hostname": "h6"
}

请告诉我如何摆脱这个。

谢谢。


问题出在你的注释中.[][]。您的输入只是一个object但你试图将其呈现为“容器”的“容器”.[][].

正确的方法是:

jq '.hosts[] | select(.hostname=="h6")' ddd.json
{
  "apt_update_last_success": "1496049307",
  "architecture": "amd64",
  "hostname": "h6"
}

此外,关于jq 1.5 this jq -r '.[][] | select(.hostname=="h6")' ddd.json不返回预期的对象,只打印jq: error (at jq1:36): Cannot iterate over string ("DC")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq:错误:无法迭代字符串 的相关文章

  • 将使用 jq 解析的数组分配给 Bash 脚本数组

    我用 jq 解析了一个 json 文件 如下所示 cat test json jq logs jq jq id jq s 它返回一个像这样的数组 34 235 436 546 使用 bash 脚本我描述了一个数组 declare a msg
  • jq 按键值排序

    给定以下 JSON 为了示例而过于简化 我需要按键的值对键进行排序 在这种情况下 顺序应该是 id gt name gt type link attributes value ConfigurationElement name type v
  • 使用 jq 创建 JSON 文件

    我尝试通过执行以下命令来创建 JSON 文件 jq arg greeting world hello greeting gt file json 该命令在没有任何输入的情况下卡住了 尽管 jq n arg greeting world he
  • 使用jq递归提取对象值和父键名称

    我需要解析的输出npm ls global json命令 这样我就可以获得所有已安装的列表npm包的格式如下 package version js resolved Where package是包含包名称的键 来自每个dependencie
  • jq json解析器哈希字段值

    我有一个 JSON 文件 如下所示 macAddress ac 5f 3e 87 d7 1a ip 1 2 3 4 macAddress ac 5f 3e 87 d7 2a ip 1 2 3 4 macAddress ac 5f 3e 87
  • 如何使用 jq 将 JSON 文档复制到另一个文档中

    我怎样才能像这样转换 JSON 文档 foo 123 bar abc 变成这样的东西 payload foo 123 bar abc 使用命令行工具jq 您只需要在输入周围包裹一个对象即可 jq payload some json
  • jq 通过转换现有的 json 创建一个新的 json

    prodid 876006 serid seridone 3265874 seridtwo 21458915 serials 028915 prodid 980 serid seridone 32743214 seridtwo 546987
  • 如何避免 jq 截断长小数

    如何防止 jq 截断长十进制值 例如 echo 18302628978110292481 jq 结果 18302628978110292000 Javascript 不支持这么大的数字 所以也不支持jq 整数大小是2 53 Check th
  • jq:从数组中删除元素

    我有这个 JSON 文件 想要从数组中删除一个元素 address localhost name local vars instances one two 我正在使用这个命令 jq del vars instances select ind
  • 如何使用 jq 进行键为数字字符串的查询

    最近发现jq并用它来格式化一些数据 如何使用它来访问 json 对象中恰好是数字字符串的字段 例如 以下内容对我来说失败并出现错误 echo 20 twenty jq 20 这样做的正确方法是什么 立即回答 使用更多引号 In jq 20
  • 如何从 JSON 对象流中获取第一个元素?

    Example name bar thing true new key 0 name baz thing false new key 0 如果我跑 name我得到的输出为 bar baz 我想要的只是bar 您可以使用first 1 htt
  • 如何让 jq 将参数视为数字而不是字符串?

    怎么做jq将输入参数视为数字而不是字符串 在下面的示例中 CURR INDEX是一个 Bash 变量 它具有我想要提取的数组索引值 jq arg ARG1 CURR INDEX ARG1 patchSets inputfile json 我
  • 为什么 jq 打印记录冗余且不匹配以及如何修复?

    我有一个 json 文件 其中包含六个 发票 对象 每个对象有 140 多行值 我只想查看六个对象中每个对象的几个值 jq似乎是一个有前途的解决方案 我在用着jq version 1 5 1 a5b5cbe可以通过以下方式获得apt的常用存
  • 如何中止存储桶的所有不完整分段上传

    有时 分段上传会因某种原因挂起或无法完成 在这种情况下 您将陷入难以删除的孤立部分 您可以通过以下方式列出它们 aws s3api list multipart uploads bucket BUCKETNAME 我正在寻找方法来中止它们
  • 有没有办法将 jq 输出到 bash 脚本的多个变量中?

    基本上我有一个 bash 脚本 它在某一时刻进行 API 调用 并生成证书和密钥并以 json 形式返回 我将其通过管道传输到 jq 并可以选择证书或密钥并将其存储在变量中 像这样的事情 CERT API call jq r certifi
  • 使用jq连接多个文件中的JSON数组

    我有一系列包含记录数组的 JSON 文件 例如 cat f1 json records a 1 a 3 cat f2 json records a 2 我想 1 从每个记录中提取一个字段 2 输出一个包含所有输入文件中所有字段值的数组 第一
  • JQ:如何将被识别为字符串的值相乘?

    我正在尝试从交换网络套接字获取一些贸易信息 在我从套接字获取的 JSON 中 值 p 和 q 都用双引号括起来 当我尝试将两个值相乘时 它表示我正在尝试将两个字符串相乘 因此 我通过 tonumber 过滤器传递这些字符串 并且错误消息发生
  • 读取原始输入行并输出单个数组

    我有一个目录 其中包含文件 我想从该文件列表创建一个数组 我以为这会很容易 比如 ls mydir jq R file1 file2 file3 我唯一能弄清楚的是 ls mydir jq sR split n select length
  • 将 JSON 数组转换为 bash 数组并保留空格

    我想将 JSON 文件转换为 bash 字符串数组 稍后我可以对其进行迭代 我的JSON结构如下 USERID TMCCP CREATED DATE 31 01 2020 17 52 USERID TMCCP CREATED DATE 31
  • 将文件读取为 JSON

    我想读取几个文件 index html style css main js 来创建用于上传的 JSON 有效负载 我知道使用 Nodejs 我可以开始创建我想要的东西 如下所示 var fs require fs fs readFile i

随机推荐