【问题标题】:jq gets objects that contain certain keyjq 获取包含特定键的对象
【发布时间】:2018-08-23 17:41:23
【问题描述】:

我正在努力寻找解决方案,我发现其他所有问题都非常接近但仍然不是答案。

我有一个巨大的 json,里面有很多对象和数组。 我想做的是从包含名为“time”或“time”的键的 json 中提取整个对象。我找到了相关的解决方案,但它们只是带来了关键而不是整个对象。

例 1:

    {
      "time": -762,
      "type": "chatwheel",
      "key": "156",
      "slot": 1,
      "player_slot": 1
    }

例 2:

{
  "time": 888,
  "type": "building_kill",
  "unit": "npc_knight",
  "key": "npc_goodguys_tower1",
  "slot": 7,
  "player_slot": 130
},

例 3:

{
  "time": 681,
  "type": "obs_left_log",
  "key": "[132, 124]",
  "slot": 0,
  "x": 132,
  "y": 124,
  "z": 130,
  "entityleft": true,
  "ehandle": 5014545,
  "player_slot": 0
},

前 4:

  "purchase_log": [
    {
      "time": -89,
      "key": "orb_of_venom"
    },
    {
      "time": -89,
      "key": "tango"
    },

所以,基本上,我不仅需要获取时间键,还需要获取键“时间”所属的整个对象。 (如示例) 有什么办法吗?

谢谢

【问题讨论】:

标签: json object select key jq


【解决方案1】:

如果你的jq有walk,并且你的电脑有足够的内存:

walk(if type == "object" 
     then if has("time") then . else empty end
     else . end )

要获取walk 的 def 副本,请参阅例如https://github.com/stedolan/jq/blob/master/src/builtin.jq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2022-06-24
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多