Get values for a given key and its parent with jq












0















I've got a JSON array like so:



{
"1": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.0
},
"2": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.0
}
}


I want to retrieve the value of "conns" atribute for each object id. I am new at jq and I cant found clear examples.



I have tried the following:



echo "$OUTPUT" | jq -r ..conns


Which returns all the values for conns, but thats is not what I needed. The spected output would be:



1 1.0
2 2.0


Any ideas?










share|improve this question

























  • There is no array in the data.

    – Kusalananda
    Nov 12 '18 at 16:51
















0















I've got a JSON array like so:



{
"1": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.0
},
"2": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.0
}
}


I want to retrieve the value of "conns" atribute for each object id. I am new at jq and I cant found clear examples.



I have tried the following:



echo "$OUTPUT" | jq -r ..conns


Which returns all the values for conns, but thats is not what I needed. The spected output would be:



1 1.0
2 2.0


Any ideas?










share|improve this question

























  • There is no array in the data.

    – Kusalananda
    Nov 12 '18 at 16:51














0












0








0








I've got a JSON array like so:



{
"1": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.0
},
"2": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.0
}
}


I want to retrieve the value of "conns" atribute for each object id. I am new at jq and I cant found clear examples.



I have tried the following:



echo "$OUTPUT" | jq -r ..conns


Which returns all the values for conns, but thats is not what I needed. The spected output would be:



1 1.0
2 2.0


Any ideas?










share|improve this question
















I've got a JSON array like so:



{
"1": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.0
},
"2": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.0
}
}


I want to retrieve the value of "conns" atribute for each object id. I am new at jq and I cant found clear examples.



I have tried the following:



echo "$OUTPUT" | jq -r ..conns


Which returns all the values for conns, but thats is not what I needed. The spected output would be:



1 1.0
2 2.0


Any ideas?







json jq






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 '18 at 16:47









Rui F Ribeiro

39.5k1479133




39.5k1479133










asked Nov 12 '18 at 15:52









A1t0rA1t0r

1035




1035













  • There is no array in the data.

    – Kusalananda
    Nov 12 '18 at 16:51



















  • There is no array in the data.

    – Kusalananda
    Nov 12 '18 at 16:51

















There is no array in the data.

– Kusalananda
Nov 12 '18 at 16:51





There is no array in the data.

– Kusalananda
Nov 12 '18 at 16:51










2 Answers
2






active

oldest

votes


















3














$ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
1 1
2 2


Seems like jq translates 1.0 to 1 and 2.0 to 2. Altering the input for clarity:



$ cat file.json
{
"1a": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.1
},
"2b": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.2
}
}
$ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
1a 1.1
2b 2.2


Refs:




  • https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...


  • https://stedolan.github.io/jq/manual/#Stringinterpolation-(foo)






share|improve this answer
























  • Thanks! Worked like a charm!

    – A1t0r
    Nov 12 '18 at 16:11



















0














alternative solution (jtc) facilitates the ask with a bit of standard cli:



bash $ echo $OUTPUT | jtc -rl -w'[+0]' -w'[+0][conns]' | sed 's/: {.*//g; s/^"conns"://' | xargs -n2
1 1.0
2 2.0
bash $


jtc (unlike jq) is a utility which confines its functionality to json operations only (so its interface is drastically simpler), however manipulating articles outside of JSON data model is offloaded to external unix tools






share|improve this answer

























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f481288%2fget-values-for-a-given-key-and-its-parent-with-jq%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1 1
    2 2


    Seems like jq translates 1.0 to 1 and 2.0 to 2. Altering the input for clarity:



    $ cat file.json
    {
    "1a": {
    "available_memory": 1086419656.0,
    "available_memory_no_overbooking": 1086419656.0,
    "conns": 1.1
    },
    "2b": {
    "available_memory": 108641236.0,
    "available_memory_no_overbooking": 10861216.0,
    "conns": 2.2
    }
    }
    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1a 1.1
    2b 2.2


    Refs:




    • https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...


    • https://stedolan.github.io/jq/manual/#Stringinterpolation-(foo)






    share|improve this answer
























    • Thanks! Worked like a charm!

      – A1t0r
      Nov 12 '18 at 16:11
















    3














    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1 1
    2 2


    Seems like jq translates 1.0 to 1 and 2.0 to 2. Altering the input for clarity:



    $ cat file.json
    {
    "1a": {
    "available_memory": 1086419656.0,
    "available_memory_no_overbooking": 1086419656.0,
    "conns": 1.1
    },
    "2b": {
    "available_memory": 108641236.0,
    "available_memory_no_overbooking": 10861216.0,
    "conns": 2.2
    }
    }
    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1a 1.1
    2b 2.2


    Refs:




    • https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...


    • https://stedolan.github.io/jq/manual/#Stringinterpolation-(foo)






    share|improve this answer
























    • Thanks! Worked like a charm!

      – A1t0r
      Nov 12 '18 at 16:11














    3












    3








    3







    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1 1
    2 2


    Seems like jq translates 1.0 to 1 and 2.0 to 2. Altering the input for clarity:



    $ cat file.json
    {
    "1a": {
    "available_memory": 1086419656.0,
    "available_memory_no_overbooking": 1086419656.0,
    "conns": 1.1
    },
    "2b": {
    "available_memory": 108641236.0,
    "available_memory_no_overbooking": 10861216.0,
    "conns": 2.2
    }
    }
    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1a 1.1
    2b 2.2


    Refs:




    • https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...


    • https://stedolan.github.io/jq/manual/#Stringinterpolation-(foo)






    share|improve this answer













    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1 1
    2 2


    Seems like jq translates 1.0 to 1 and 2.0 to 2. Altering the input for clarity:



    $ cat file.json
    {
    "1a": {
    "available_memory": 1086419656.0,
    "available_memory_no_overbooking": 1086419656.0,
    "conns": 1.1
    },
    "2b": {
    "available_memory": 108641236.0,
    "available_memory_no_overbooking": 10861216.0,
    "conns": 2.2
    }
    }
    $ jq -r 'keys as $k | "($k) (.[$k].conns)"' file.json
    1a 1.1
    2b 2.2


    Refs:




    • https://stedolan.github.io/jq/manual/#Variable/SymbolicBindingOperator:...as$identifier|...


    • https://stedolan.github.io/jq/manual/#Stringinterpolation-(foo)







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 12 '18 at 16:06









    glenn jackmanglenn jackman

    51k571110




    51k571110













    • Thanks! Worked like a charm!

      – A1t0r
      Nov 12 '18 at 16:11



















    • Thanks! Worked like a charm!

      – A1t0r
      Nov 12 '18 at 16:11

















    Thanks! Worked like a charm!

    – A1t0r
    Nov 12 '18 at 16:11





    Thanks! Worked like a charm!

    – A1t0r
    Nov 12 '18 at 16:11













    0














    alternative solution (jtc) facilitates the ask with a bit of standard cli:



    bash $ echo $OUTPUT | jtc -rl -w'[+0]' -w'[+0][conns]' | sed 's/: {.*//g; s/^"conns"://' | xargs -n2
    1 1.0
    2 2.0
    bash $


    jtc (unlike jq) is a utility which confines its functionality to json operations only (so its interface is drastically simpler), however manipulating articles outside of JSON data model is offloaded to external unix tools






    share|improve this answer






























      0














      alternative solution (jtc) facilitates the ask with a bit of standard cli:



      bash $ echo $OUTPUT | jtc -rl -w'[+0]' -w'[+0][conns]' | sed 's/: {.*//g; s/^"conns"://' | xargs -n2
      1 1.0
      2 2.0
      bash $


      jtc (unlike jq) is a utility which confines its functionality to json operations only (so its interface is drastically simpler), however manipulating articles outside of JSON data model is offloaded to external unix tools






      share|improve this answer




























        0












        0








        0







        alternative solution (jtc) facilitates the ask with a bit of standard cli:



        bash $ echo $OUTPUT | jtc -rl -w'[+0]' -w'[+0][conns]' | sed 's/: {.*//g; s/^"conns"://' | xargs -n2
        1 1.0
        2 2.0
        bash $


        jtc (unlike jq) is a utility which confines its functionality to json operations only (so its interface is drastically simpler), however manipulating articles outside of JSON data model is offloaded to external unix tools






        share|improve this answer















        alternative solution (jtc) facilitates the ask with a bit of standard cli:



        bash $ echo $OUTPUT | jtc -rl -w'[+0]' -w'[+0][conns]' | sed 's/: {.*//g; s/^"conns"://' | xargs -n2
        1 1.0
        2 2.0
        bash $


        jtc (unlike jq) is a utility which confines its functionality to json operations only (so its interface is drastically simpler), however manipulating articles outside of JSON data model is offloaded to external unix tools







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 9 at 16:26

























        answered Jan 9 at 16:01









        Dmitry L.Dmitry L.

        112




        112






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f481288%2fget-values-for-a-given-key-and-its-parent-with-jq%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            List directoties down one level, excluding some named directories and files

            list processes belonging to a network namespace

            list systemd RuntimeDirectory mounts