我有一个Erlang元组列表,如下所示:
[ {{"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"]}] ">>
我尝试在Erlang中使用JSON解析库(jiffy和jsx),具体步骤如下:
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).
我得到了以下输出(这里我已经将列表更改为二进制,因为jsx接受二进制):
<<"[{{[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)也会产生相同的输出。 有人可以帮我得到以下输出吗:
<<" [ {{"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"]}] ">>
替代
标签
<<"[{{[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 you in advance
s\n",[B])。但是目前我得到的输出结果是这样的<< "[{{"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"]}]">>。有没有办法以二进制字符串的形式获取数据,而不带斜杠,就像<<" ">>一样。使用io:format("s\n")选项也会删除<<" ">>,但我也想要它。另外,我也想摆脱生成的'\n'。请给予建议。 - abhishek ranjan\n
的字符串,您可以执行类似于io_lib:format("~1000p", [A])
的操作 - 如果输出长度超过1000个字符,则只会添加换行符;不确定是否有一种方法可以在没有限制的情况下完成它。您可以使用io:format("<<\"~s\">>\n", [B])
打印它,以获取中间双引号的<<"
和">>
标记而不转义它们。 - legoscia