Skip to main content
Version: 1.0.0

Projections

An object projection is the section inside {...} after select.

Select fields

select {id, name, email} from 'customers.json'

Every input row produces an object with those fields.

Rename a value

Put the output key before a colon:

select {customerId: id, displayName: name} from 'customers.json'

Create nested objects

Nested braces create nested output:

select {
id,
contact: {name, email}
} from 'customers.json'
{"id": 1, "contact": {"name": "Amina", "email": "amina@example.com"}}

An empty nested projection is valid:

select {metadata: {}} from 'customers.json'

It returns {"metadata": {}} for every row.

Missing values

Missing and explicit null values are left out of projected objects. Values such as 0, false, and an empty string are preserved.

Unique output paths

Every output path must be unique. Do not select both a parent and one of its children in the same projection. Distinct paths such as users.name and teams.name remain separate nested objects.

Contextual values

true, false, and null can be used as values:

select {id, enabled: true} from 'customers.json'

If the source contains a field literally named true, false, or null, that field value is used. Otherwise JQL uses the corresponding boolean or null value.