未定义的函数映射:to_json/1

undefined function maps:to_json/1

这是我从 Programming Erlang, 2nd Ed 中学到的东西之一,但似乎不适用于 shell

$ erl
Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V6.2  (abort with ^G)
1> Dic = #{b => 1, a => 2}.
#{a => 2,b => 1}
2> maps:to_json(Dic).
** exception error: undefined function maps:to_json/1
3> 

这是怎么回事?

Programming Erlang, 2nd Ed 是在 maps were introduced in release 17 之前编写的(作为实验性功能),似乎本书的作者 Joe Armstrong 对它们过于乐观了。仍然有一些建议的功能和语法尚未实现(或永远不会实现)。

幸运的是,有 JSON 个支持映射的 erlang 解析器,检查:

另一个库(imo 最容易使用)是 jsone:

jsone github