2017-06-25 32 views
-3

JSON這是我的JSON:我如何可以排序我的BASH

{ 
    "zeta" : "ciao", 
    "form2" : { 
     "metodo" : "GET", 
     "action" : "", 
     "cognome" : { 
     "nome" : "cognome", 
     "placeholder" : "inserisci il tuo cognome" 
     } 
    }, 
    "form1" : { 
     "metodo" : "POST", 
     "action" : "", 
     "cognome" : { 
     "nome" : "matteoe", 
     "placeholder" : "inserisci il tuo cognome" 
     } 
    }, 
    "chiave" : "valore" 
} 

我wanto以字母順序排序的json。結果:

{ 「chiave」: 「valore」, 「澤塔」: 「僑」, 「form1的」:{ 「動作」: 「」, 「方法方法」: 「POST」, 「 cognome「:{ ..... .....

此json具有按字母順序排列的按鍵。

+3

歡迎來到SO,請展示您的編碼工作, – Cyrus

+2

使用'jq'工具。 –

+1

爲什麼''zeta「'會在''form1'之前出現在字母排序中? –

回答

0
  1. 「-S」命令行選項將導致輸出中的所有對象都與排序的鍵一起呈現。

  2. 下面將發射所述輸入物體在排序的順序頂級密鑰名稱:

to_entries | sort_by(.key) | from_entries 
  • 一種方法來重建所有對象,以便按鍵排列順序 是使用walk/1,例如
  • walk(if type == "object" 
         then to_entries | sort_by(.key) | from_entries 
         else . end) 
    
    1

    使用jq-S--sort-keys標誌:

    $ echo '{"zeta":"ciao","form2":{"metodo":"GET","action":"","cognome":{"nome":"cognome","placeholder":"inserisci il tuo cognome"}},"form1":{"metodo":"POST","action":"","cognome":{"nome":"matteoe","placeholder":"inserisci il tuo cognome"}},"chiave":"valore"}' | jq --sort-keys '.' 
    { 
        "chiave": "valore", 
        "form1": { 
        "action": "", 
        "cognome": { 
         "nome": "matteoe", 
         "placeholder": "inserisci il tuo cognome" 
        }, 
        "metodo": "POST" 
        }, 
        "form2": { 
        "action": "", 
        "cognome": { 
         "nome": "cognome", 
         "placeholder": "inserisci il tuo cognome" 
        }, 
        "metodo": "GET" 
        }, 
        "zeta": "ciao" 
    } 
    

    注意,無論深度,這個排序的所有鍵的哈希值。