🤩
Erlang の JSON ライブラリ選定について
2024-12-15 追記
Erlang/OTP 27.0 から標準ライブラリに JSON ライブラリが含まれるようになりました。基本的には標準ライブラリを利用して、もし必要な機能がある場合は標準ライブラリの JSON 機能を拡張することをお勧めします。
時雨堂では標準の 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