json - 使用 jq 解析每行 JSON 记录?

标签 json grouping jq jsonlines

我有一个工具可以在每一行输出一个 JSON 记录,我想用 jq 处理它。

输出如下所示:

{"ts":"2017-08-15T21:20:47.029Z","id":"123","elapsed_ms":10}
{"ts":"2017-08-15T21:20:47.044Z","id":"456","elapsed_ms":13}

当我按如下方式将其传递给 jq 时:
./tool | jq 'group_by(.id)'

...它输出一个错误:
jq: error (at <stdin>:1): Cannot index string with string "id"

如何让 jq 处理 JSON-record-per-line 数据?

最佳答案

使用 --slurp (或 -s )开关:

./tool | jq --slurp 'group_by(.id)'

它输出以下内容:
[
  [
    {
      "ts": "2017-08-15T21:20:47.029Z",
      "id": "123",
      "elapsed_ms": 10
    }
  ],
  [
    {
      "ts": "2017-08-15T21:20:47.044Z",
      "id": "456",
      "elapsed_ms": 13
    }
  ]
]

...然后您可以进一步处理。例如:
./tool | jq -s 'group_by(.id) | map({id: .[0].id, count: length})'

关于json - 使用 jq 解析每行 JSON 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714384/

相关文章:

wpf - 在 ListView 中显示分组项目的总和

json - jq:获取二维数组的维度

javascript - 将 javascript 数组加载到 Chartist.js 作为系列

javascript - 如何从 ballerina 0.982.0 中的 Json 数组中提取值

c# - 序列化 JSON 字符串以匹配 WCF 服务函数参数

r - 在 r 中保持组元素从第一个非缺失开始直到最后一个

javascript - 使用 JSON 和 Openlayers-3 添加矢量图层时出现错误

testng - 如何在 Cypress 中添加测试用例分组

json - jq:选择并删除嵌套字段

jq - 使用 jq 实用程序解析 json 并将字段附加在一起