Linux command line jq allows you to process json data more elegantly

https://github.com/stedolan/jq

https://stedolan.github.io/jq/manual/

brew install jq

data.json

$ cat data.json 
{
  "code": 0,
  "msg": "",
  "data": {
    "pageNo": 1,
    "pageSize": 10,
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}
$ cat data.json | jq .
{
  "code": 0,
  "msg": "",
  "data": {
    "pageNo": 1,
    "pageSize": 10,
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}
cat data.json | jq .code
0

single in list

$ cat data.json | jq .data.list[0]
{
  "id": null,
  "city": "北京",
  "name": null,
  "email": null
}

multiple in list

$ cat data.json | jq .data.list[0,1]
{
  "id": null,
  "city": "北京",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "上海",
  "name": null,
  "email": null
}

All list

$ cat data.json | jq .data.list[]
{
  "id": null,
  "city": "北京",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "上海",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "广州",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "深圳",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "杭州",
  "name": null,
  "email": null
}

Specified fields in the list

$ cat data.json | jq .data.list[].city
"北京"
"上海"
"广州"
"深圳"
"杭州"

Specify the field within the list and remove the double quotes

$ cat data.json | jq .data.list[].city | tr -d '\"'
北京
上海
广州
深圳
杭州

Delete a single attribute

$ cat data.json | jq 'del(.msg)'
{
  "code": 0,
  "data": {
    "pageNo": 1,
    "pageSize": 10,
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}

Delete multiple properties

$ cat data.json | jq 'del(.msg,.data.pageNo,.data.pageSize)'
{
  "code": 0,
  "data": {
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}

Delete an attribute from a list

$ cat data.json | jq 'del(.msg,.data.pageNo,.data.pageSize,.data.list[].id)'
{
  "code": 0,
  "data": {
    "total": 5,
    "list": [
      {
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}

Replace all Hangzhou with Chengdu

$ cat data.json | jq 'del(.msg,.data.pageNo,.data.pageSize,.data.list[].id)' | sed 's/杭州/成都/g'
{
  "code": 0,
  "data": {
    "total": 5,
    "list": [
      {
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "city": "成都",
        "name": null,
        "email": null
      }
    ]
  }
}

More jq related https://blog.csdn.net/wzj_110/article/details/117387891

Guess you like

Origin blog.csdn.net/uwoerla/article/details/127849515