Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
831 views
in Technique[技术] by (71.8m points)

syntax - jq special characters in nested keys

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...