json - jq - 按值排序

标签 json jq

我有以下结构:

{"ID":"XX","guid":1}
{"ID":"YY","guid":2}
...

我尝试过运行:

jq 'sort_by(.guid)' conn.json

但是我收到错误:

Cannot index string with string "guid"

请您告诉我如何按 guid 对文件进行排序和/或找到 guid 最大的记录?

更新

我实际上要寻找的是数据集中GUID最大的记录。认为排序会对我有帮助,但事实证明它非常慢

谢谢

最佳答案

sort_by 假设其输入是可迭代的,并在对其成员进行排序之前通过应用 .[] 来扩展它。您向其提供一个对象流,在本例中,每个对象都会扩展为不可索引值("XX", 1 等)的流,因此 .guid 失败。

吸食它们以使其发挥作用,例如:

jq -s 'sort_by(.guid)[]' conn.json

要提取具有最大 GUID 的对象,您不需要手动对提取的输入进行排序;对于此类任务,jq 有 max_by,例如:

jq -s 'max_by(.guid)' conn.json

reduce,这是对于大输入更方便的构造,并且消除了slurping的需要。

jq 'reduce inputs as $in (input; if $in.guid > .guid then $in else . end)' conn.json

关于json - jq - 按值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354507/

相关文章:

javascript - 使用带有嵌套 "list"的 .NET deserialize() 进行 JSON 解析

json - 解析 Woocommerce Webhook (JSON)

Python - 创建 JSON 数组?并传递给 ajax

rounding - jq: error: round/0 未在 <top-level> 定义

jq 创建一个具有嵌套结构的数组

javascript - API 数据未显示在 EJS 文件中

java - Gson json获取结果

json - 用JQ解析json : Where are the comma?

json - 如何使用 jq 合并来自 2 个文件的 2 个 JSON 对象?

json - 将 JSON 拆分为多个文件