jq:将数组转换为按文件名索引的对象?

2024-02-10

Using jq https://stedolan.github.io/jq/如何将数组转换为按文件名索引的对象,或将多个文件读取到按文件名索引的一个对象中?

e.g.

jq -s 'map(select(.roles[]? | contains ("mysql")))' -C dir/file1.json dir/file2.json

这给了我想要的数据,但我需要知道它们来自哪个文件。

所以而不是

[
    { "roles": ["mysql"] },
    { "roles": ["mysql", "php"] }
]

对于输出,我想要:

{
    "file1": { "roles": ["mysql"] },
    "file2": { "roles": ["mysql", "php"] }
}

我确实希望也删除“.json”文件扩展名如果可能的话,以及基本名称(不包括目录)。


Example

file1.json
{ "roles": ["mysql"] }
file2.json
{ "roles": ["mysql", "php"] }
file3.json
{ }

我的真实文件显然还包含其他内容,但这对于本示例来说应该足够了。 file3 只是为了演示有时会丢失的“角色”。

换句话说:我试图在“角色”列表中查找包含“mysql”的文件。我需要将文件名和内容合并到一个 JSON 对象中。


进一步简化问题:

jq 'input_filename' f1 f2

为我提供了我想要的所有文件名,但我不知道如何将它们组合成一个对象或数组。

Whereas,

jq -s 'map(input_filename)' f1 f2

给我the same每个文件的文件名重复一次。例如[ "f1", "f1" ]代替[ "f1", "f2" ]


如果你的jq有inputs(与 jq 1.5 一样)那么只需调用一次 jq 即可完成任务。 此外,使用它可能会更有效any而不是迭代所有元素.roles.

技巧是使用 -n 选项调用 jq,例如

jq -n '
  [inputs
   | select(.roles and any(.roles[]; contains("mysql")))
   | {(input_filename | gsub(".*/|\\.json$";"")): .}]
  | add' file*.json
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq:将数组转换为按文件名索引的对象? 的相关文章

  • 将字符串替换为 jq

    我有以下文件file txt a a b a time 20210210T10 10 00 a b b b time 20210210T11 10 00 我用以下方法提取值bash命令jq 我在海量 100g 文件上使用此命令 jq r a
  • 为什么我收到此错误:“未捕获类型错误:无法读取未定义的属性“标题””?

    我正在尝试写一个ajax网络应用程序 我有一个函数应该请求一个json对象 然后使用它来重新 填充网站 这里是JavaScript有问题 第 8 16 行 window onload LoadData Home var doc functi
  • Json 对象 - 获取键和值

    我是 JSON 的新手 所以 如果这是一个非常基本的疑问 请不要责骂我 我有一个 JSON 对象引用 我想获取 Key 对象只有一个键值对 我如何在 Java 中获得它 您可以使用jsonObject keys 获取所有钥匙 然后您可以迭代
  • ZF2 查看攻略

    我正在尝试执行以下操作 简单的控制器和动作 Action 应根据请求返回 2 种类型的响应 HTML in case of ordinary request text html JSON in case of ajax request ap
  • 如何使用 getJSONArray 方法访问 json 对象的嵌套元素

    我有一个 JSON 响应 如下所示 result map entry key xsi type xs string ContentA value fsdf key xsi type xs string ContentB value dfdf
  • Scala 中值类的隐式 Json 格式化程序

    我有许多值类组成了一个更大的对象案例类 final case class TopLevel foo Foo bar Bar final case class Foo foo String extends AnyVal final case
  • VBA - HTML 抓取问题

    我正在尝试从网站上抓取拍卖数据https www rbauction com heavy equipment auctions https www rbauction com heavy equipment auctions 我当前的尝试是
  • PostMan 测试脚本:检查响应 JSON 的内容

    邮差 6 0 10 在这里 我试图了解如何更好地编写测试脚本 并在阅读了其他内容之后优秀的文档 https www getpostman com docs v6 postman scripts test scripts对于如何查询和检查从请
  • Rails 渲染 JSON - 会话丢失?

    我正在尝试对控制器进行一些 Ajax 调用 该控制器以 JSON 进行响应 if session user render json gt Some Data else render json gt You are not logged in
  • UNWIND 从 JSON 文件加载的多个不相关的数组

    我试图通过一次调用 apoc load json 来展开多个数组属性 我的版本不能完全工作 某些关系无法加载 我的猜测是 这是由于通过WITH 命令进行输出管道造成的 如果我为每个基于数组的属性单独运行展开 我可以加载所有内容 但我很好奇如
  • 如何从 API 转换一些原始数据并将其保存到变量中,以便我可以在 C# 中使用它们

    我正在做一个个人项目 它是一个 C 应用程序 使用 API 与一些 Web 服务进行通信 我终于用这几行得到了第一个原始数据 var client new RestClient https api abcd com token var re
  • 编码的 nsdata utf8 json,在 ios 中带有重音字符

    我向网络服务器发出一个发布请求 该服务器用 JSON 回答我 这是响应的标头 Cache Control private Content Length 826 Content Type application json charset ut
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • 类似 jq 中的 sql join

    我有以下 json id 1 type folder title folder 1 id 2 type folder title folder 2 id 3 type item title item 1 folder 1 id 4 type
  • Ajax JSON 数据和灯箱冲突

    我有一个带有灯箱插件的画廊设置光廊 http sachinchoolur github io lightGallery docs 该画廊与静态 HTML 完美配合 当我动态抓取 API 数据并尝试让灯箱处理这些项目时 问题就出现了 我似乎无
  • 从 appsettings.json 读取 JSON 对象

    TL DR 如何从 appsettings json 读取复杂的 JSON 对象 我有一个具有多种类型的配置值的 NET Core 2 x 应用程序 appsettings json看起来像下面的代码片段 我正在尝试读取的值ElasticS
  • 为什么 JSON 结果可以是布尔值而不是对象或数组?

    From JSON 网站 http json org JSON 建立在两种结构之上 名称 值对的集合 在各种语言中 这被实现为对象 记录 结构 字典 哈希表 键控列表或关联数组 值的有序列表 在大多数语言中 这被实现为数组 向量 列表或序列
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐