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中json解析)