为什么 jq 打印记录冗余且不匹配以及如何修复?

2024-03-25

我有一个 json 文件,其中包含六个“发票”对象,每个对象有 140 多行值。我只想查看六个对象中每个对象的几个值。jq似乎是一个有前途的解决方案。

我在用着jq version 1.5-1-a5b5cbe可以通过以下方式获得apt的常用存储库。

我可以cat stripe-invoices-list.json | jq -C '. | {invoice_id: .data[].id,}'它返回:

{
  "invoice_id": "in_1Gq39HFGUwFHXzvlUOGG3Rv4"
}
{
  "invoice_id": "in_1GpyM1FGUwFHXzvlio9pfaM9"
}
{
  "invoice_id": "in_1GpyHUFGUwFHXzvlHDS727su"
}
{
  "invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5"
}

这是有道理的并且工作正常。这些是六个发票对象的 ID。一切都很好,但仅仅查看 id 并没有什么帮助。所以...

我尝试向输出添加更多数据,但它会创建冗余甚至不正确的输出:

$ cat stripe-invoices-list.json | jq -C '. | {invoice_id: .data[].id, client: .data[].customer_name,}'

结果是:

{
  "invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
  "client": "client_two"
}
{
  "invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
  "client": "client_three"
}
{
  "invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
  "client": "client_four"
}
{
  "invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
  "client": "client_five"
}
{
  "invoice_id": "in_1Gpy4HFGUwFHXzvl6k82godp",
  "client": "client_one"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
  "client": "client_one"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
  "client": "client_two"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
  "client": "client_three"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
  "client": "client_four"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
  "client": "client_five"
}
{
  "invoice_id": "in_1GpjNjFGUwFHXzvl880gp0o9",
  "client": "client_one"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
  "client": "client_one"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
  "client": "client_two"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
  "client": "client_three"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
  "client": "client_four"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
  "client": "client_five"
}
{
  "invoice_id": "in_1GSkk7FGUwFHXzvlfWdhcad5",
  "client": "client_one"

这提供了冗余且混乱的信息。这是多余的,因为in_1GSkk7FGUwFHXzvlfWdhcad5被多次列出,并且被打乱,因为一张发票与每个客户相关联。

当我打开stripe-invoices-list.json在 vim 中的文件中我可以看到发票 IDin_1GSkk7FGUwFHXzvlfWdhcad5与....关联client_one.

谁能建议可能导致此问题的原因,或者我可以采取的任何调试步骤? 如何得到jq正确打印这个?


这是一个常见的陷阱,你正在扩展data在同一个对象构造函数中两次,它会导致组合爆炸 https://en.wikipedia.org/wiki/Combinatorial_explosion#Computing。下面是正确的做法。

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

为什么 jq 打印记录冗余且不匹配以及如何修复? 的相关文章

随机推荐

  • std::map 中 std::string 的 Valgrind 内存泄漏

    这是 Valgrind 的输出 6519 at 0x4C25885 operator new unsigned long vg replace malloc c 319 6519 by 0x4EE65D8 std string Rep S
  • 删除 ASP.NET MVC 4 到应用程序根目录的路径中的尾部斜杠

    在我的 ASP NET MVC 4 应用程序中RouteConfig文件中 我注册了以下默认路由 routes MapRoute Default controller action id new controller home action
  • 设置 jQuery.data() 是否会触发事件?

    我想知道是否致电 domElement data key newValue 会触发一个我可以处理的事件吗 我尝试过绑定change但设置数据时不会触发此操作 我认为这个问题可能会问类似的问题 但具有约束力changeData也没用 jQue
  • 在 AndroidJunit 测试项目中运行 UiAutomatorTestcase

    我实际上正在尝试在 Android Junit Test 项目中实现一个简单的测试套件 该项目使用以下类 UiObject 用户界面选择器 UiAutomator测试用例 单击并打开 Android 设备上的 Messaging 应用程序
  • java中多线程环境下的静态方法行为

    class Clstest public static String testStaticMethod String inFileStr section 0 section 1 do something with inFileStr sec
  • 允许向 ChoiceType 字段添加新值

    I use Form Component并有一个选择类型字段 http symfony com doc current reference forms types choice html在呈现到选择字段的表单上 在客户端我使用选择2插件 h
  • 亚马逊 S3 URL 编码

    如果我有一个文件名 a d1 tttt sq jpg 当它上传到 Amazon S3 时 它会转换为这样 a d1 22 tttt 22 sq jpg 因此双引号被 URL 编码并且文件名本身被更改 必须使用编码的 URL 来获取文件 a
  • 如何杀死一个pid不断变化的进程?

    我知道我可以使用这个技巧if fork exit 0 改变当前进程的pid 因此 下面的程序的 pid 变化很快 如何杀死这样的进程 有没有比执行大量更好的方法killall procname直到一个人能够奔跑kill 在分叉之前 我知道这
  • 当图像大小不同时,如何格式化图像数据以进行训练/预测?

    我正在尝试训练对图像进行分类的模型 我遇到的问题是 它们的尺寸不同 我应该如何格式化我的图像 或模型架构 你没有说你在说什么架构 既然你说你想对图像进行分类 我假设它是一个部分卷积 部分完全连接的网络 如 AlexNet GoogLeNet
  • 使用匿名方法有任何开销吗?

    我想知道创建后台工作人员时使用匿名方法是否会产生任何开销 例如 public void SomeMethod BackgroundWorker worker new BackgroundWorker worker DoWork sender
  • 算术溢出相当于模运算吗?

    我需要在 C 中进行模 256 算术 那么我可以简单地做吗 unsigned char i i 代替 int i i i 1 256 不 没有什么可以保证unsigned char有八位 使用uint8 t from
  • 向 Apache Fop 添加注释

    我正在使用渲染 PDF阿帕奇 福普 我正在制作 XSLT 模板 用于将 xml 转换为 PDF 我想使用以下方法在输出 PDF 中添加注释阿帕奇 福普 我一直在搜索 它说 iText 支持向 pdf 添加注释 是否可以在 Apache Fo
  • wpf手动生成TreeViewItem容器

    我正在运行时创建一个 TreeView 它有几个节点 TreeViewItem 每个节点都有一个名称 最初它是崩溃的 单独的组合框显示所有 TreeViewItem 的名称 我必须根据所选名称突出显示 TreeViewItem 我正在使用递
  • 使用 scala 将 Spark 中的 DataFrame 单行转置为列

    我在这里看到这个问题 使用 scala 在 Spark 中转置数据帧而不进行聚合 https stackoverflow com questions 49392683 transpose dataframe without aggregat
  • 如何从 Javascript 调用 Objective-C?

    我有一个 WebView 我想从 JavaScript 调用 Objective C 中的视图 有人知道我该怎么做吗 我的 ViewController 中有这段代码 BOOL webView UIWebView webView2 shou
  • 在 Swift 中,如何停止所有进程,直到从 UICOLLECTIONVIEW 中的 parse.com 检索到数据

    在 CollectionView 中 我显示来自 parse com 的数据 成功找回 但无法在单元格中显示 我收到数组出站错误 我发现了错误 解析是异步运行的 但是 在解析结束之前 集合视图会被加载 所以我无法在单元格中显示值 它抛出一个
  • 使用Firebug发送表单数据

    是否可以使用 URL 中没有的参数发送 AJAX 数据 我有一个从表单获取信息的脚本 服务器使用 POST 而不是 GET 我注意到 FireBug 可以仅在 URL 中发送参数 如果不可能 是否有其他程序可以帮助我 https addon
  • 我怎样才能只显示card.column值与angular2中的column.id匹配的结果?

    我有下面的代码 它工作正常 它的作用是 ngFor Repeat 为列对象中的每一列创建一个列 目前 它显示每列中卡片对象中的每张卡片 我想要它做的是仅显示列中的卡片 其中column id card column 我该如何修改我的代码来做
  • 使用 ElementTree 解析 XML 时使用命名空间

    这是以下问题使用 ElementTree 修改 XML https stackoverflow com questions 25068629 modify a xml using elementtree 我现在在 XML 中有命名空间并尝试
  • 为什么 jq 打印记录冗余且不匹配以及如何修复?

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