Erlang の JSON ライブラリ選定について

1 min read読了の目安(約600字

結論

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 という外部とのやり取りをする部分で、そこまでしてリスクを取りたくない。