キモブロ

Please spy check please, Fucking retard

コマンドラインでPerlっぽいhashで書いてさくっとJSON生成するやつ便利

コマンド・ラインでJSONをいい感じに整形するのによく jq コマンド使いますが、その逆でさくっとJSON書きたいなーって時に便利だなと思ってるやつがあるので紹介させてください

こんな感じで使えるやつです。Perlっぽいhashで書いてJSON生成できる

$ jg '{a => b}'
{
   "a" : "b"
}

$ jg '{query => {prefix => {value => "di"}}, filter => {term => {is_delete => 0}} }'
{
   "filter" : {
      "term" : {
         "is_delete" : 0
      }
   },
   "query" : {
      "prefix" : {
         "value" : "di"
      }
   }
}

ElasticsearchのAPIを生で使う時とかに便利だと思ってます。
たとえばこんなかんじですね。

$ jg '{query => {prefix => {value => "di"}}, filter => {term => {is_delete => 0}} }' | curl -XPOST http://localhost:9200/indices/table/_search
(割愛)


こちら、PerlJSON::XS モジュール入ってる環境じゃないと出来ません

$ cpanm JSON::XS

するとjson_xsってコマンドが使えるようになるのですが、それを使って以下の様な function を .zshrc か何かに書いておきます。

function jg(){
    echo "$@" | json_xs -f eval
}


追記:
メリット書き忘れました。

  • ケツカンマきにしなくていい
  • 意外とvalidなJSON書くの大変というのが楽になる(構文エラーがわかるかもしれない)