erlang中json解析

最近要用erlang写一个接口,功能是银行卡信息验证,这个要接入,第三方的服务提供者,他们的接口要求采用http post请求,请求body要求是标准的json的格式,在github上有个用erlang写的开源应用jsx可以满足我需求,用起来很方便,现在总结一下它的基本应用:

添加依赖到rebar3管理的app中的rebar.config中
...
{erl_opts, [debug_info]}.
{deps, [
       ...
       {jsx, {git, "https://github.com/talentdeficit/jsx.git", {branch, "v2.8.0"}}}
]}.
...
下载并编译jsx到app的本地库中,执行下面的命令
$  rebar3 compile

利用jsx接口实现erlang term与json互相转换

  • 将包含json字串,utf8编码的二进制转化为proplist
1> jsx:decode(<<"{\"library\": \"jsx\", \"awesome\": true}">>).
[{<<"library">>,<<"jsx">>},{<<"awesome">>,true}]
  • 将包含json字串,utf8编码的二进制转化为map
2> jsx:decode(<<"{\"library\": \"jsx\", \"awesome\": true}">>, [return_maps]).
#{<<"awesome">> => true,<<"library">> => <<"jsx">>}
  • 将erlang term(proplist),转化为utf8编码的二进制json字串
1> jsx:encode([{<<"library">>,<<"jsx">>},{<<"awesome">>,true}]).
<<"{\"library\": \"jsx\", \"awesome\": true}">>
  • 将erlang term(map),转化为utf8编码的二进制json字串
2> jsx:encode(#{<<"library">> => <<"jsx">>, <<"awesome">> => true}).
<<"{\"awesome\":true,\"library\":\"jsx\"}">>

注意:map和proplit转化为json时,其中的元素应为二进制的表示形式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 世界是并行的,Erlang程序反应了我们思考和交流的方式,人作为个体通过发送消息进行交流,如果有人死亡,其他人会注...
    abel_cao阅读 2,795评论 1 4
  • vim的使用环境比较复杂,可以通过terminal在本地使用(比如Mac或Linux主机),也可以ssh连接到远程...
    楚客阅读 5,655评论 0 7
  • http://cenalulu.github.io/mysql/mysql-mojibake/ 10分钟学会理解和...
    dek阅读 511评论 0 3
  • 转自:http://blog.csdn.net/kesonyk/article/details/50924489 ...
    晴天哥_王志阅读 24,941评论 2 38
  • 这些话 只写给两个人。 万分幸运 在和N多的迷妹拼手速拼人品之后,拿到了一张票,一张在微微播出之后,显得更为珍贵的...
    0ec586b64469阅读 219评论 0 0