2

I have a json similar to the following:

{
    "_source" : {
        "index-pattern" : {
            "fields" : ""
        }
    }
}

I'm trying to modify fields, but chaining the . identity operator, such as 'jq ._source.["index-pattern"].fields' produces the following error:

'._source.["index-pattern"]
         ^
1 compile error'

Any ideas?

thanks

peak
  • 105,803
  • 17
  • 152
  • 177
user9269299
  • 21
  • 1
  • 2

1 Answers1

4

You could write:

._source | .["index-pattern"].fields

or even:

._source["index-pattern"].fields

Explanation: if "x" and "y" are alphanumeric strings that begin with an alphabetic character (where "alphabetic" includes "_") then .x | .y can be abbreviated to .x.y.

There are several other circumstances when E | F can be abbreviated, e.g. E | .[] can often be abbreviated to E[].

However, the general rule is:

If an abbreviated form does not work, don't use it.

peak
  • 105,803
  • 17
  • 152
  • 177