美文网首页
erlang中json解析

erlang中json解析

作者: 司马阿Q | 来源:发表于2017-09-28 14:25 被阅读0次

    最近要用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解析

          本文链接:https://www.haomeiwen.com/subject/jgposxtx.html