🤩

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

2020/11/17に公開

2024-12-15 追記

Erlang/OTP 27.0 から標準ライブラリに JSON ライブラリが含まれるようになりました。基本的には標準ライブラリを利用して、もし必要な機能がある場合は標準ライブラリの JSON 機能を拡張することをお勧めします。

json — stdlib v6.2

時雨堂では標準の JSON ライブラリに jsone 互換の機能を追加した shiguredo/jsone を公開しています。

結論

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 年以上利用してるが不具合が一切出ていない。定期的なメンテナンスもされている。最新版への追従も問題ない。

Discussion