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

如何使用jq将JSON数组转换为JSONL格式以导入ElasticSearch?

用jq将JSON转换为JSONL的实用方法

没问题!用jq工具把常规JSON转成JSONL(每行一个独立JSON对象,完美适配Elasticsearch索引需求)非常简单,我给你分场景讲清楚操作方式:

场景1:原始JSON是对象数组(最常见)

如果你的输入JSON是一个包含多个对象的数组,比如这样的结构:

[
  {"id": 1, "name": "Alice", "age": 30},
  {"id": 2, "name": "Bob", "age": 28}
]

直接用下面的命令,就能把数组里的每个对象单独输出成一行紧凑的JSON:

jq -c '.[]' input.json > output.jsonl
  • -c 参数:让jq输出紧凑格式的JSON(不换行、无多余空格),刚好符合JSONL的单行要求
  • .[]:遍历顶层数组的每一个元素,逐个输出

执行后,output.jsonl的内容会是:

{"id":1,"name":"Alice","age":30}
{"id":2,"name":"Bob","age":28}

场景2:原始JSON是单个顶层对象

如果你的输入是单个JSON对象(比如只有一条数据),想把它转成JSONL(单一行),用这个命令:

jq -c '.' input.json > output.jsonl

这个命令会把单个对象压缩成单行,直接生成合法的JSONL文件。

场景3:复杂嵌套JSON,需提取特定层级对象

如果你的JSON结构有嵌套,比如需要从嵌套数组里提取目标对象,比如:

{
  "data": {
    "users": [
      {"profile": {"id": 1, "username": "alice123"}},
      {"profile": {"id": 2, "username": "bob456"}}
    ]
  }
}

要提取每个profile对象生成JSONL,只需要调整jq的路径表达式:

jq -c '.data.users[].profile' input.json > output.jsonl

这样就能精准定位到嵌套的对象,逐个输出成JSONL行。

小技巧:处理管道输入

如果你的JSON数据是通过管道传递过来的(比如从API接口获取),可以不用指定输入文件,直接这样操作:

curl -s https://your-api-endpoint/data | jq -c '.[]' > output.jsonl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:16:50