Sample JSON File

Sample JSON File containing well known programmers that we use for the following examples

coders.json
[
  {
    "name": "Bjarne Stroustrup",
    "languages": [
      {
        "name": "C++",
        "year_created": 1983
      }
    ],
    "details": {
      "nationality": "Danish",
      "awards": ["IEEE Computer Society Computer Pioneer Award", "Charles Stark Draper Prize"]
    }
  },
  {
    "name": "Guido van Rossum",
    "languages": [
      {
        "name": "Python",
        "year_created": 1991
      }
    ],
    "details": {
      "nationality": "Dutch",
      "awards": ["Free Software Foundation Award for the Advancement of Free Software", "NLUUG Award"]
    }
  },
  {
    "name": "James Gosling",
    "languages": [
      {
        "name": "Java",
        "year_created": 1995
      }
    ],
    "details": {
      "nationality": "Canadian",
      "awards": ["Order of Canada", "The Economist Innovation Award"]
    }
  },
  {
    "name": "Dennis Ritchie",
    "languages": [
      {
        "name": "C",
        "year_created": 1972
      },
      {
        "name": "Unix",
        "year_created": 1969
      }
    ],
    "details": {
      "nationality": "American",
      "awards": ["Turing Award", "National Medal of Technology"]
    }
  },
  {
    "name": "Brendan Eich",
    "languages": [
      {
        "name": "JavaScript",
        "year_created": 1995
      }
    ],
    "details": {
      "nationality": "American",
      "awards": ["Webby Award"]
    }
  }
]

Traverse array and return specific fields

The following query selects all programming languages

jq '[ .[].languages[] | {name, year_created} ]' coders.json

[
  {
    "name": "C++",
    "year_created": 1983
  },
  {
    "name": "Python",
    "year_created": 1991
  },
  {
    "name": "Java",
    "year_created": 1995
  },
  {
    "name": "C",
    "year_created": 1972
  },
  {
    "name": "Unix",
    "year_created": 1969
  },
  {
    "name": "JavaScript",
    "year_created": 1995
  }
]