jq获取包含某些键的对象

时间:2018-08-23 17:41:23

标签: json object select key jq

我正在努力寻找解决方案,所有其他问题我都已经找到了很接近的答案,但仍然没有答案。

我有一个巨大的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
},

Ex 4:

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

如果您的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