🤩
Erlang の JSON ライブラリ選定について
結論
jsone を採用するべき。
- JSON のパースで速度がボトルネックになるような場面がないため、ピュア Erlang なライブラリで十分
- jsone の try_ を付けるだけで ok/error になるというシンプルで迷わない
- map に対応している
-
undefined_as_null
を利用することでエンコード時に undefined を null に変換してくれる -
{keys, attempt_atom}
を利用することで binary_to_existing_atom/1 を利用して key を atom に変換してくれる - spec を書く際に jsone:json_value() という型がとても便利
-
skip_undefined
を利用することでエンコード時に undefined のものをエンコードしないでくれる
7 年以上利用してるが不具合が一切出ていない。定期的なメンテナンスもされている。最新版への追従も問題ない。
jiffy
jiffy は NIF で書かれているため性能が良い。 jsone の約 3 倍程度早い。
速度を求めたい場合は jiffy を採用するのもあり、ただ NIF なので何かあったら Erlang VM 事巻き込んで落ちるので要注意。 JSON という外部とのやり取りをする部分で、そこまでしてリスクを取りたくない。
Discussion