124
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JSONを楽に生成できるツールを移植してみた

Last updated at Posted at 2019-02-24

こんにちわ
ゴリラです

先日Twitter上でmattnさんのツイートを見て、
joってツールを知りました。
image.png

2019/02/25
本家のREADMEにgjoが追加されました。
https://github.com/jpmens/jo/blob/master/README.md#see-also

2019/02/26
Windowsでgjo -p status=$(gjo name=gorilla) というふうにしたい場合はshellwrapを使ってください。
詳細はこちらをどうぞ。

joとは

普段curlを使って何かデータをPOSTする時って"をエスケープしないといけないのですよね。

curl -X POST -H "Content-type: application/json" https://localhost/gorilla -d "{\"name\":\"gorilla\",\"age\":26}"

エスケープ面倒だし見づらいから、もっと書きやすくしようってのがjoっていうツールコンセプトになります。
使い方は簡単で、key=valueって引数に渡すだけでjson形式に変換して標準出力してくれます。

$ jo -p name=gorilla age=26
{
   "name": "gorilla",
   "age": 26
}

これをcurlと組み合わせるとこうなります。

curl -X POST -H "Content-type: application/json" https://localhost/gorilla -d $(jo name=gorilla age=26)

だいぶ楽になりましたね。

移植の話

ここからが本題ですが、仕組みはシンプルだったのでGoの勉強のため移植しました。

こちらのツールの使い方も本家とほぼ同じです。

# -pでjsonを整形した状態で標準出力します
# -aで配列を生成することができます(配列の場合はキー不要になります)
$ gjo -p status=(gjo name=gorilla age=26 lang=(gjo -a Go Java PHP))
{
    "status": {
        "age": 26,
        "lang": [
            "Go",
            "Java",
            "PHP"
        ],
        "name": "gorilla"
    }
}
# -vでバージョン情報を標準出力します
$ gjo -v -p
{
    "program": "gjo",
    "description": "This is inspired by jpmens/jo",
    "author": "gorilla0513",
    "repo": "https://github.com/skanehira/gjo",
    "version": "1.0.2"
}
# -hでヘルプを標準出力します
$ gjo -h
Usage of gjo:
  -a    creates an array of words
  -p    pretty-prints
  -v    show version

とこんな感じで、本家ほどではないのですが、
最低限のことはできるようになっています。

興味ある方は触ってみてください。
Windowsでも動くと思いますが(動作未確認)動かなかったらPRください。

おまけ

gjoを作って公開したらmattnさんからPRをいただきました。
Small fixesと書いて有りながら、雑に書いたソースを超きれいに直していただいたので、感謝してます。

image.png

移植やってみて思ったこと

移植は難しいけど、やっぱり結構勉強になるなぁと思いました。
移植した分だけ、勉強になるんで今後もいろいろ移植してみます。

124
64
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
124
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?