json

cd /tmp
wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
tar xfvz jq-1.5.tar.gz
cd jq-1.5
./configure && make && sudo make install
ejemplo
{
  "ACTION": "domain.list",
  "DATA": [
    {
      "TYPE": "slave",
      "AXFR_IPS": "none",
      "DOMAIN": "domain1.com",
      "TTL_SEC": 0,
      "SOA_EMAIL": "",
      "DOMAINID": 11111,
      "DESCRIPTION": "",
      "EXPIRE_SEC": 0,
      "RETRY_SEC": 0,
      "STATUS": 1,
      "LPM_DISPLAYGROUP": "",
      "REFRESH_SEC": 0
    },
    {
      "TYPE": "slave",
      "AXFR_IPS": "none",
      "DOMAIN": "domain2.net",
      "TTL_SEC": 0,
      "SOA_EMAIL": "",
      "DOMAINID": 22222,
      "DESCRIPTION": "",
      "EXPIRE_SEC": 0,
      "RETRY_SEC": 0,
      "STATUS": 1,
      "LPM_DISPLAYGROUP": "",
      "REFRESH_SEC": 0
    },
    {
      "TYPE": "slave",
      "AXFR_IPS": "none",
      "DOMAIN": "domain3",
      "TTL_SEC": 0,
      "SOA_EMAIL": "",
      "DOMAINID": 33333,
      "DESCRIPTION": "",
      "EXPIRE_SEC": 0,
      "RETRY_SEC": 0,
      "STATUS": 1,
      "LPM_DISPLAYGROUP": "",
      "REFRESH_SEC": 0
    },
  ],
  "ERRORARRAY": []
}
selecciona segundo subdocumento del documento DATA
| jq '.DATA | .[2]'
selecciona todos los elementos de DOMAINID
| jq '.DATA | .[].DOMAINDID'
selecciona elemento por criterio/filtro
| jq '.DATA[] | select(.DOMAIN == "domain2") | .DOMAINID'

/via: https://github.com/stedolan/jq/issues/370

sample='[{"name":"foo"},{"name":"bar"}]'
for row in $(echo "${sample}" | jq -r '.[] | @base64'); do
    _jq() {
     echo ${row} | base64 --decode | jq -r ${1}
    }
 
   echo $(_jq '.name')
done

/via: https://starkandwayne.com/blog/bash-for-loop-over-json-array-using-jq/

  • development/json/start.txt
  • Darrera modificació: 25/03/2020 01:23
  • per mate