jq を使ってみた

jq を使ってみた

json の結果を見やすく整形するツール
だいぶ前に話題になっていたのを、ようやくサワれる感じ。

ここからはチュートリアルに沿って見ていく。

Twitter の 直近 5 個の json という単語を含む検索結果の tweet を拾ってくれる API を叩く。

curl 'http://search.twitter.com/search.json?q=json&rpp=5&include_entities=true'

これだと見難いので、適当に見やすくする。
これは、jq に '.' を渡せばよい

curl 'http://search.twitter.com/search.json?q=json&rpp=5&include_entities=true' | jq '.'

結果は、見るとわかるが results という配列の中に入っている。

そこで、results の一つ目の配列の要素をみてみる。

curl 'http://search.twitter.com/search.json?q=json&rpp=5&include_entities=true' | jq '.results[0]'

そうすると、直近の json を含む twitter の検索結果がとれた。

ここで、誰がどんなことを発言しているのかを切り抜きたい。
from_user 要素と text 要素が対応しているので、それらを切り出す。

curl 'http://search.twitter.com/search.json?q=json&rpp=5&include_entities=true' | jq '.results[0] | {from_user, text}'

すべての from_user 要素と text 要素を取り出す。

curl 'http://search.twitter.com/search.json?q=json&rpp=5&include_entities=true' | jq '.results[] | {from_user, text}'
                              • -

次のような返り値がある場合、次のようにパースできるらしい

{
  "user_mentions": [],
  "urls": [{
      "indices": [83, 103],
      "display_url": "bit.ly/StniqT",
      "expanded_url": "http://bit.ly/StniqT",
      "url": "http://t.co/28Jesbio"
  }],
  "hashtags": [
    {"indices": [108, 114], "text": "Apple" },
    {"indices": [121, 129], "text": "Awesome"}
  ]
}
jq '.results[] | {from_user, text, urls: [.entities.urls[].url]}'