コマンドラインで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 (割愛)
こちら、Perl の JSON::XS モジュール入ってる環境じゃないと出来ません
$ cpanm JSON::XS
するとjson_xsってコマンドが使えるようになるのですが、それを使って以下の様な function を .zshrc か何かに書いておきます。
function jg(){ echo "$@" | json_xs -f eval }
追記:
メリット書き忘れました。
- ケツカンマきにしなくていい
- 意外とvalidなJSON書くの大変というのが楽になる(構文エラーがわかるかもしれない)