使用 jq 访问可以是字符串或数组的字段

2024-03-29

我有大量 json 数据转储,如下所示:

[{
   "recordList" : {
      "record" : [{
          "Production" : {
              "creator" : {
                  "name" : "A"
              }
          }
      },
      {
          "Production" : {}
      },
      {
          "Production" : [{
              "creator" : {
                  "name" : "B"
              },
              "creator" : {
                  "name" : "C"
              }
              }]
          }]
      }
}]

我需要检查记录中是否至少有一个创建者。如果存在,我会在 CSV 文件中为该字段给出 1,否则给出 0。

My code:

jq -r '.[].recordList.record[]|"\(if ((.Production.creator.name)? // (.Production[]?.creator.name)?) == null or ((.Production.creator.name)?|length // (.Production[]?.creator.name)?|length) == 0 then 0 else 1 end),"' file.json

问题是,当有多个创建者时,“Production”字段只是一个数组。

在这种情况下我想要得到的结果是:

1,
0,
1,

jq解决方案:

jq -r '.[].recordList.record[].Production 
       | "\(if ((type == "array" and .[0].creator.name !="") 
                 or (type == "object" and .creator.name and .creator.name !="")) 
            then 1 else 0 end),"' file.json

输出:

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

使用 jq 访问可以是字符串或数组的字段 的相关文章

  • jq - 如何根据属性值的“黑名单”选择对象

    类似于这里回答的问题 jq 如何根据属性值的 白名单 选择对象 我想根据属性值黑名单选择对象 以下内容可以很好地作为白名单 curl s https api github com repos stedolan jq commits per
  • 使用 jq 将 JSON 从 AWS SSM 转换为环境变量

    我对此做了一些研究 感觉好像我已经完成了 80 左右 但由于分割其中一个字符串 我很难根据需要调整 jq 输出 我正在尝试将 AWS SSM 的 JSON 输出转换为环境变量 AWS命令 aws ssm get parameters by
  • 使用 jq 删除 JSON 值中的重复项

    我有以下 JSON function ping name start servers load 581 6875 last heard 2 379324197769165 version 1 0 hidden false pid 19735
  • jq:根据键是否以指定字符串结尾过滤输入

    我收到了这个混乱的 JSON 数据 我需要提取类型列表 token accessor auth token 909d6a81 config default lease ttl 0 max lease ttl 0 description to
  • 使用jq将json数组转换为jsonl格式

    我有这样的 json one 1 two 2 并希望将其转换为以下格式 one 1 two 2 以便于将其索引到 ElasticSearch 中 后者称为 jsonl 格式 JQ 是我最喜欢的工具 但我不知道如何做到这一点 谢谢 关键是 c
  • jq 通过转换现有的 json 创建一个新的 json

    prodid 876006 serid seridone 3265874 seridtwo 21458915 serials 028915 prodid 980 serid seridone 32743214 seridtwo 546987
  • 如何顺序打印jq输出

    使用时jq在处理 JSON 时 我经常因为 JSON 对象太长而失去概述 因此 像jq less会好的 然而 尽管上面的方法有效 但是漂亮的着色jq离开了 还有其他阅读方式吗jq逐行或逐个窗口地输出 而不会让终端充斥着完整的 JSON 对象
  • 如何用JQ补数字?

    我想向数字中的字符串添加前导 尾随零 结果字符串需要包含 01 或 001 而不是 1 我注意到项目https github com joelpurra jq zeros但我从包管理器 dnf fedora 安装了 jq 所以需要一些jqn
  • jq:错误:无法用字符串索引数组

    我正在尝试为检查点管理服务器 API 编写 bash 脚本 但遇到了一些问题 我想获取 json 字典中的值 为此我必须使用变量 我正在输入这个命令 echo rulebase jq arg n 0 rulebase n to 我收到下一个
  • jq - 如果长度不为空,则返回数组值

    我有一个由 gitlab 管道生成的report json 看起来像 version 14 0 4 vulnerabilities id 64e69d1185ecc48a1943141dcb6dbd628548e725f7cef70d574
  • 使用 jq 附加 JSON 对象

    我在下面JSON结构 a aVal x x1 x1Val x2 x2Val y y1 y1Val 我想添加 x3 x3Val x4 x4Val to x 所以输出应该是 x x3 x3Val x4 x4Val 是否可以使用jq https
  • 将环境变量转换为json文件

    我正在尝试找到一种方法将配置设置提供给在容器中运行的 SPA 应用程序 我当前的计划是将配置作为环境变量传递 然后在容器启动时 从这些环境变量生成一个 json 文件以传递到浏览器 以及 SPA 应用程序 我计划像这样格式化我的环境变量 E
  • 如何在 shell 脚本中即时解释变量?

    我正在使用 JQ 在 shell 脚本中读取 JSON 在这里 我无法动态解释 shell 脚本中的变量 HOME HOST PEMFILE JSON 文件 script install HOME lib install sh HOST P
  • 如何在大 JSON 中删除大量对象并保留少量对象

    如何在大 JSON 文件中删除大量对象并保留少量对象 在这里 我有以下 JSON 文件 service category managed object resource object action locate options max VA
  • 为什么 jq 打印记录冗余且不匹配以及如何修复?

    我有一个 json 文件 其中包含六个 发票 对象 每个对象有 140 多行值 我只想查看六个对象中每个对象的几个值 jq似乎是一个有前途的解决方案 我在用着jq version 1 5 1 a5b5cbe可以通过以下方式获得apt的常用存
  • jq 从数组中选择值

    我有以下带有示例值的 JSON 文件 files fileName FOO md5 blablabla fileName BAR md5 alaldlafj 现在我想要的是返回 md5 值 例如文件名是 FOO 为此我有以下声明jq cat
  • 使用 jq 访问可以是字符串或数组的字段

    我有大量 json 数据转储 如下所示 recordList record Production creator name A Production Production creator name B
  • 合并 JSON 数组

    所以我的目标是合并 json 文件以获得以下格式 title NamesBook list name Ajay name Al 我的文件看起来像这样的格式 等等 json title NamesBook list name Ajay blu
  • JQ:如何将被识别为字符串的值相乘?

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

    我有一个包含两个数组的 JSON 文件 我想将数组组合成一个对象数组 每个对象都包含每个原始数组中的一个元素 JSON 输入如下所示 en E1 E2 E3 E4 fr F1 F2 F3 F4 期望的输出 en E1 fr F1 en E2

随机推荐

  • numpy.array 的总和部分

    假设我有以下数组 a np array 1 2 3 4 5 6 7 8 9 10 11 12 3 5 6 7 8 9 我想对第一行的前两个值求和 1 2 3 然后是接下来的两个值 3 4 7 进而5 6 11 对每一行依此类推 我想要的输出
  • HTML5 章节与文章

    我有一个由各种 部分 组成的页面 例如视频 新闻源等 我有点困惑如何用 HTML5 表示这些 目前我将它们作为 HTML5 section s 但经过进一步检查 看起来更正确的标签是 section
  • 如何从列表创建分组条形图

    我正在尝试绘制一个条形图 它比较两种不同情况下的多个项目的数量 所需的输出将是一个条形图 其中 4 4 8 个条形图彼此相邻 指示每种情况的每种类型的数量 这是我编写的初始代码 它没有给出我的期望 我该如何修改这个 import numpy
  • 如何在 Spring Data Elasticsearch 2.2.3.RELEASE 中配置 Rest 高级客户端的套接字超时

    我将 Spring Boot Starter Data Elasticsearch 2 2 3 RELEASE 与 Elasticsearch v6 8 6 结合使用 我配置了 RestHighLevelClient 以连接到集群 现在我在
  • 如何在 React 中将 JSON 响应呈现为下拉列表

    我目前正在尝试获取从 API 收到的一些 JSON 数据 并将其放入一个非常简单的 React 应用程序的下拉列表中 到目前为止 这是我的 DropDown 组件 import React from react var values fet
  • 如何使用boost预处理器生成访问器?

    例如 class A int m x float m y double m z int x const return m x float y const return m y double z const return m z 变得像 cl
  • 将忽略的配置文件添加到 git repo 作为示例

    我有一个正在开发的应用程序的存储库 其中包含配置文件 目前 我分发的是 dist扩展名 并让用户在编辑文件之前重命名该文件 nate myAwesomeApp git ls files gitignore README config dis
  • Nginx 没有将 websocket 升级响应传递回客户端?

    我在精确的 64 vagrant box 上使用 Nginx Websockets 并使用 c mono 作为应用程序服务器 目标是直接通过 Nginx 提供静态内容 并在同一端口上处理普通的 http 服务请求 在 service 上 和
  • YAML Azure Devops:步骤任务引用无效。任务名称不明确

    我正在尝试使用 AzureRmWebAppDeployment 任务将 WebJobs 部署到应用程序服务 Azure 应用程序服务部署 以下是以下 YAML 代码 任务 AzureRmWebAppDeployment 4 task Azu
  • 如何请求增加 Google Cloud 中的 GPU 配额

    我一直在尝试请求增加 Compute Engine 的 GPU 配额 因为当我尝试启动实例时 Google Cloud 说我的 GPU 配额为 0 我升级了帐户 但我似乎不知道需要做什么来增加配额 我看过很多教程 但自从这些教程发布以来 云
  • 将 BSTR 转换为 LPCWSTR

    这是我的需要 BSTR l strArgs LPCWSTR sth OutputDebugStringW sth 如何将 BSTR 转换为 LPCWSTR 是否有任何仅标头的库可以将任何字符串类型 微软 转换为 LPCWSTR 类型 只需覆
  • 使用java 8流的if-else条件[重复]

    这个问题在这里已经有答案了 设想 有一种情况我需要设置一些值List使用 Java 8 流 API 基于某些字段条件的对象 下面是对象的示例User public class User private int id private Stri
  • 在Python中将*args传递给string.format?

    是否可以将 args 传递给 string format 我有以下功能 classmethod def info cls component msg args Log an info message cls log cls Level IN
  • Java:定义错误的finalize方法会导致内存泄漏

    在java中 如果没有强引用指向x并且x符合垃圾收集条件 则垃圾收集将调用对象x的finalize方法 如果finalize方法永远不会终止 会导致内存泄漏吗 public class X protected void finalize w
  • Reactjs:如何自定义多个电子邮件添加和编辑的字段

    在我的项目中 有一个表单字段可以添加多封电子邮件 为此 我正在使用 react multi email 包 通过使用此包可以添加和删除电子邮件标签 但现在我也想要编辑操作 我是 ReactJS 的初学者 所以我不知道如何自定义或添加任何额外
  • Win32 - 作为普通用户进程启动最高可用子进程

    假设您的 Windows 用户帐户位于 Admin 组中 启用了 UAC 并且您正在以普通用户权限运行某些程序 A A从不要求提升 也从未得到提升 现在假设 A 想要启动程序 B 该程序的清单中具有 HighestAvailable 如果
  • 如何验证来自不同发行者的 jwt 令牌

    我正在使用可操作的消息 通过 Outlook Web 应用程序 来调用逻辑应用程序 因此我在请求中得到了一个不记名令牌 操作 授权 承载者eyJ0eXAi 调用堆栈 Outlook web app gt Logic App gt my en
  • os.path.split,更改文件名而不影响路径

    我已经关注了Python获取文件名并更改并将其保存在变量中 https stackoverflow com questions 18944357 python get file name and change save it in vari
  • 如何推迟/推迟 f 字符串的评估?

    我正在使用模板字符串生成一些文件 并且我喜欢为此目的而使用的新 f 字符串的简洁性 以减少我以前的模板代码 如下所示 template a The current name is name names foo bar for name in
  • 使用 jq 访问可以是字符串或数组的字段

    我有大量 json 数据转储 如下所示 recordList record Production creator name A Production Production creator name B