erlang中json解析

JavaScript098

erlang中json解析,第1张

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

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

Json编码,在Python里就是一句话:

json.dumps(user_data)

但是Erlang没有自带的Json模块,只能自己造轮子:

先下载mochijson2:

用erlc编译

然后,上代码:

[plain] view plain copy

get_json_data() ->

UserData = [{"product_name", "Programming Erlang"},{"order_type", "97"},{"money","100"}],

DataConverted = [{X,list_to_binary(Y)} || {X,Y} <- UserData],%%convert value to binary

O1 = mochijson2:encode(DataConverted),

O2 = iolist_to_binary(O1),

binary_to_list(O2).%%format to string

注意:

1. encode之前,需要将value转为binary编码

2. encode之后的数据是io_list, 要先转为binary,再转为list才能作为字符串使用

如果数据格式固定的,直接匹配,然后用lists:keyfind就可以提取值了:

{_,L}={struct,[{"msg_type",0},{"from_id","100101"},{"to_id","123456"}]},

MsgType = lists:keyfind("msg_type",1,L),

FromID = lists:keyfind("from_id",1,L),

......