You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下用jq解析JSON:简化字段查询及多字段提取方法

当然有更简洁的写法,同时一次性提取多个字段也完全没问题,我来给你拆解一下:

更简洁的写法

你当前的命令用到了cat加管道传递内容给jq,其实jq本身就支持直接读取文件路径,完全可以去掉多余的cat操作,简化成:

jq '.title[].type[].properties.firstname' x.json

这样既减少了一个管道调用,让命令更简洁,也稍微提升了执行效率。

一次性提取多个字段

如果要同时提取firstname、lastname(或者其他任意多个字段),可以根据你想要的输出格式选择不同的写法:

输出结构化JSON对象(推荐,可读性强)

先通过|把properties节点单独抽出来,然后直接构造包含目标字段的JSON对象:

jq '.title[].type[].properties | {firstname, lastname}' x.json

这种写法会输出一组组独立的JSON对象,每个对象对应一组字段,示例输出:

{
  "firstname": "Alice",
  "lastname": "Smith"
}
{
  "firstname": "Bob",
  "lastname": "Jones"
}

输出JSON数组形式

如果希望每组字段以数组的形式输出(比如只需要纯值列表),可以写成:

jq '.title[].type[].properties | [.firstname, .lastname]' x.json

对应的输出会是:

["Alice", "Smith"]
["Bob", "Jones"]

聚合所有结果到一个大数组

如果需要把所有提取到的字段结果统一包裹在一个数组里(方便后续批量处理),可以在外层加上数组构造符[]:

jq '[.title[].type[].properties | {firstname, lastname}]' x.json

输出会是一个包含所有对象的数组:

[
  {
    "firstname": "Alice",
    "lastname": "Smith"
  },
  {
    "firstname": "Bob",
    "lastname": "Jones"
  }
]

内容的提问来源于stack exchange,提问作者artemisia480

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:22:28