ゆっくり jq – JSON processor –

気が付けば、「curl」ぐらいほぼ毎日使っている「jq」の備忘録。

いきなり脱線しますが、「nc」「curl」「wget」「jq」「awk」「sed」「xargs」「wc」「seq」とかって、魔法使いのツールですよね : -)

JSON => JSONL

$ cat users.json

{
  "users": [
    {
      "id": 1,
      "name": "hoge"
    },
    {
      "id": 2,
      "name": "moge"
    },
    {
      "id": 3,
      "name": "guga"
    }
  ]
}

$ cat b.json | jq -c

{"users":[{"id":1,"name":"hoge"},{"id":2,"name":"moge"},{"id":3,"name":"guga"}]}

JSONL => JSON

$ cat users.json

{"users":[{"id":1,"name":"hoge"},{"id":2,"name":"moge"},{"id":3,"name":"guga"}]}

$ cat users.json | jq .

{
  "users": [
    {
      "id": 1,
      "name": "hoge"
    },
    {
      "id": 2,
      "name": "moge"
    },
    {
      "id": 3,
      "name": "guga"
    }
  ]
}

キー名を変更

bananaをpaineに変更。

  1. paineと言うキー名に、bananaの値をコピー。
  2. del()関数で、bananaを削除。

と、考えると理解しやすい。

$ echo '{ "fruits": { "apple": "1", "orange": "2", "banana": "3" }, "pets": { "dog": "1", "cat": "2" } }' | jq '. | .fruits.paine = .fruits.banana | del(.fruits.banana)'
{
  "fruits": {
    "apple": "1",
    "orange": "2",
    "paine": "3"
  },
  "pets": {
    "dog": "1",
    "cat": "2"
  }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です