注意: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),
......