erlang - How to Convert a list of tuples into a Json string -
i have erlang list of tuples follows:
[ {{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]} , {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]} ]
i wanted list of tuples in form:
<<" [ {{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]} , {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]}] ">>
so tried using json parsing libraries in erlang (both jiffy , jsx ) here did:
a=[ {{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]} , {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]} ], b=erlang:iolist_to_binary(io_lib:write(a)), jsx:encode(b).
and following output(here have changed list binary since jsx accepts binary):
<<"[{{[97]},[2],[{3,[98]},{4,[99]}],[5,[100]],[1,1],{e},[[102]]},{{[103]}, [3],[{6,[104]},{7,[105]}],[{8,[106]}],[1,1,1],{k},[[76]]}]">>
jiffy:encode(b) gives same output. can me output :
<<" [ {{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]} , {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]}] ">>
instead of
<<"[{{[97]},[2],[{3,[98]},{4,[99]}],[5,[100]],[1,1],{e},[[102]]},{{[103]}, [3],[{6,[104]},{7,[105]}],[{8,[106]}],[1,1,1],{k},[[76]]}]">>
thank in advance
instead of io_lib:write(a)
, use io_lib:format("~p", [a])
. tries guess lists meant strings. (in erlang, strings lists of integers. try it: "a" == [65]
)
> a=[ {{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]} , {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]} ]. [{{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]}, {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]}] > b = erlang:iolist_to_binary(io_lib:format("~p", [a])). <<"[{{\"a\"},[2],[{3,\"b\"},{4,\"c\"}],[5,\"d\"],[1,1],{e},[\"f\"]},\n {{\"g\"},[3],[{6,\"h\"},{7,\"i\"}],[{8,\"j\"}],[1,1,1],{k},[\"l\"]}]">>
if don't want see backslashes before double quotes, can print string standard output:
> io:format("~s\n", [b]). [{{"a"},[2],[{3,"b"},{4,"c"}],[5,"d"],[1,1],{e},["f"]}, {{"g"},[3],[{6,"h"},{7,"i"}],[{8,"j"}],[1,1,1],{k},["l"]}]
wiki
Comments
Post a Comment