Json Erlang-将字符串转换为二进制文件
有没有什么好方法可以将列表/元组中的字符串转换为二进制数据? 例如: 输入:Json Erlang-将字符串转换为二进制文件,json,binary,erlang,Json,Binary,Erlang,有没有什么好方法可以将列表/元组中的字符串转换为二进制数据? 例如: 输入: [{"start", [{"data", [{"number",[{"@id","333"},{"#text","test message"}]}, {"data","current date"}]}, {"mass", [{"client","35"}, {"address","lattitude"}, {"code","3454343"}, {"foo",[{"@tipo","casa"},{"#text","So
[{"start", [{"data", [{"number",[{"@id","333"},{"#text","test message"}]}, {"data","current date"}]}, {"mass", [{"client","35"}, {"address","lattitude"}, {"code","3454343"}, {"foo",[{"@tipo","casa"},{"#text","Some text message 2"}]}, {"product","TEST"}]}]}]
输出:
[{<<"start">>, [{<<"data">>, [{<<"number">>,[{<<"@id">>,<<"333">>},{<<"#text">>,<<"test message">>}]}, {<<"data">>,<<"current date">>}]}, {<<"mass">>, [{<<"client">>,<<"35">>}, {<<"address">>,<<"lattitude">>}, {<<"code">>,<<"3454343">>}, {<<"foo">>,[{<<"@tipo">>,<<"casa">>},{<<"#text">>,<<"Some text message 2">>}]}, {<<"product">>,<<"TEST">>}]}]}]
[{,[{,[{,[{,[{,},{,}]},{,[{,},{,},{,},{,[{,},{,},},{,},},{,}]}]
像这样的
[list_to_binary(X) || X <- ["1","2","3"]].
[列出二进制(X)| | X使用:
-模块(测试)。
-编译(全部导出)。
to_binary({Term1,Term2})->
{to_binary(Term1),to_binary(Term2)};
to_binary([{u Term1,_Term2}}|u Objs]=术语)->
[to_二进制(术语)| |术语
erlang:列表到二进制(术语);
当erlang:is_number(Term)->
学期
到_二进制(真)->
符合事实的
至_二进制(假)->
错误的
当erlang:is_atom(Term)->
erlang:list_to_binary(erlang:atom_to_list(Term));
to_二进制(术语)->
学期
我使用您的输入运行上述函数:
p@Jahanbakhsh ~/Projects/Test $ erl
Erlang/OTP 19 [erts-8.2.2] [source-1ca84a4] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.2.2 (abort with ^G)
1> c(test).
{ok,test}
2> Input = [{"start", [{"data", [{"number",[{"@id","333"},{"#text","test message"}]}, {"data","current date"}]}, {"mass", [{"client","35"}, {"address","lattitude"}, {"code","3454343"}, {"foo",[{"@tipo","casa"},{"#text","Some text message 2"}]}, {"product","TEST"}]}]}].
[{"start",
[{"data",
[{"number",[{"@id","333"},{"#text","test message"}]},
{"data","current date"}]},
{"mass",
[{"client","35"},
{"address","lattitude"},
{"code","3454343"},
{"foo",[{"@tipo","casa"},{"#text","Some text message 2"}]},
{"product","TEST"}]}]}]
3> test:to_binary(Input).
[{<<"start">>,
[{<<"data">>,
[{<<"number">>,
[{<<"@id">>,<<"333">>},{<<"#text">>,<<"test message">>}]},
{<<"data">>,<<"current date">>}]},
{<<"mass">>,
[{<<"client">>,<<"35">>},
{<<"address">>,<<"lattitude">>},
{<<"code">>,<<"3454343">>},
{<<"foo">>,
[{<<"@tipo">>,<<"casa">>},
{<<"#text">>,<<"Some text message 2">>}]},
{<<"product">>,<<"TEST">>}]}]}]
4>
p@Jahanbakhsh~/Projects/Test$erl
Erlang/OTP 19[erts-8.2.2][source-1ca84a4][64位][smp:8:8][async threads:10][hipe][kernel poll:false]
Eshell V8.2.2(使用^G中止)
1> c(测试)。
{好的,测试}
2> 输入=[{“开始”、[{“数据”、[{“数字”、[{“@id”、“333”}、{“{text”、“测试消息”}、{“数据”、“当前日期”}、{“质量”、[{“客户机”、“35”}、{“地址”、“晶格”}、{“代码”、“3454343”}、{“foo”、[{“@tipo”、“测试消息”}、{“}、{”}、{“文本”、“一些文本消息2}、{“产品”、“测试”}]。
[{“开始”,
[{“数据”,
[{“number”、[{“@id”、“333”}、{“#text”、“testmessage”}],
{“数据”,“当前日期”}]},
{“弥撒”,
[{“客户”,“35”},
{“地址”,“格子”},
{“代码”,“3454343”},
{“foo”,“tipo”,“casa”},{“text”,“Some text message 2”},
{“产品”、“测试”}]}]
3> 测试:到二进制(输入)。
[{,
[{,
[{,
[{,},{,}]},
{,}]},
{,
[{,},
{,},
{,},
{,
[{,},
{,}]},
{,}]}]}]
4>
使用:
-模块(测试)。
-编译(全部导出)。
to_binary({Term1,Term2})->
{to_binary(Term1),to_binary(Term2)};
to_binary([{u Term1,_Term2}}|u Objs]=术语)->
[to_二进制(术语)| |术语
erlang:列表到二进制(术语);
当erlang:is_number(Term)->
学期
到_二进制(真)->
符合事实的
至_二进制(假)->
错误的
当erlang:is_atom(Term)->
erlang:list_to_binary(erlang:atom_to_list(Term));
to_二进制(术语)->
学期
我使用您的输入运行上述函数:
p@Jahanbakhsh ~/Projects/Test $ erl
Erlang/OTP 19 [erts-8.2.2] [source-1ca84a4] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.2.2 (abort with ^G)
1> c(test).
{ok,test}
2> Input = [{"start", [{"data", [{"number",[{"@id","333"},{"#text","test message"}]}, {"data","current date"}]}, {"mass", [{"client","35"}, {"address","lattitude"}, {"code","3454343"}, {"foo",[{"@tipo","casa"},{"#text","Some text message 2"}]}, {"product","TEST"}]}]}].
[{"start",
[{"data",
[{"number",[{"@id","333"},{"#text","test message"}]},
{"data","current date"}]},
{"mass",
[{"client","35"},
{"address","lattitude"},
{"code","3454343"},
{"foo",[{"@tipo","casa"},{"#text","Some text message 2"}]},
{"product","TEST"}]}]}]
3> test:to_binary(Input).
[{<<"start">>,
[{<<"data">>,
[{<<"number">>,
[{<<"@id">>,<<"333">>},{<<"#text">>,<<"test message">>}]},
{<<"data">>,<<"current date">>}]},
{<<"mass">>,
[{<<"client">>,<<"35">>},
{<<"address">>,<<"lattitude">>},
{<<"code">>,<<"3454343">>},
{<<"foo">>,
[{<<"@tipo">>,<<"casa">>},
{<<"#text">>,<<"Some text message 2">>}]},
{<<"product">>,<<"TEST">>}]}]}]
4>
p@Jahanbakhsh~/Projects/Test$erl
Erlang/OTP 19[erts-8.2.2][source-1ca84a4][64位][smp:8:8][async threads:10][hipe][kernel poll:false]
Eshell V8.2.2(使用^G中止)
1> c(测试)。
{好的,测试}
2> 输入=[{“开始”、[{“数据”、[{“数字”、[{“@id”、“333”}、{“{text”、“测试消息”}、{“数据”、“当前日期”}、{“质量”、[{“客户机”、“35”}、{“地址”、“晶格”}、{“代码”、“3454343”}、{“foo”、[{“@tipo”、“测试消息”}、{“}、{”}、{“文本”、“一些文本消息2}、{“产品”、“测试”}]。
[{“开始”,
[{“数据”,
[{“number”、[{“@id”、“333”}、{“#text”、“testmessage”}],
{“数据”,“当前日期”}]},
{“弥撒”,
[{“客户”,“35”},
{“地址”,“格子”},
{“代码”,“3454343”},
{“foo”,“tipo”,“casa”},{“text”,“Some text message 2”},
{“产品”、“测试”}]}]
3> 测试:到二进制(输入)。
[{,
[{,
[{,
[{,},{,}]},
{,}]},
{,
[{,},
{,},
{,},
{,
[{,},
{,}]},
{,}]}]}]
4>
您的输入数据是固定在同一个3元素元组(id、created和article)上的吗?还是会有所不同?@Asierazkunaga nope。理论上,它可以是不同的大小,但应该是{key、val}结构,以便我可以通过jsx将其转换为json(例如),您的输入数据是固定在同一个3元素元组(id、created和article)上的吗?或者可能会有所不同?@AsierAzkuenaga nope。理论上,它可以是不同的大小,但应该是{key,val}结构,这样我就可以通过jsx将其转换为json(例如)这是巨大的。谢谢你,这就是我需要的。当我积累道具列表时,也将有趣的列表添加到二进制中。再次感谢你。当我发布问题时,你总是帮助我。这是巨大的。谢谢你,这是我需要的。当我积累道具列表时,也将有趣的列表添加到二进制中。再次感谢你。当我发布问题时,你总是帮助我