JQ Recipes

Pick

[Source]

# stream should be a stream of dot-paths
def pick(stream):
  . as $in
  | reduce path(stream) as $a (null;
      setpath($a; $in|getpath($a)) );

DATA: simple-nest.json

$ jq 'include "recipes"; pick(.a.d.e)' data/simple-nest.json
{
  "a": {
    "d": {
      "e": 2
    }
  }
}

DATA: api-extractor.schema.json

$ jq 'include "recipes"; pick(.properties.dtsRollup.type)' data/api-extractor.schema.json
{
  "properties": {
    "dtsRollup": {
      "type": "object"
    }
  }
}

string pick

def spick($key): 
  getpath([($key|split(".")[]|select(length > 0))]);