2015-05-13 4 views
-1

У меня есть ниже строки в Erlang, которые я получаю от Msg#archive_message.bodyконкатенации строка с переменной в Эрл

{\"message\":\"tttfdfdfdfdddtt\",\"customid\":\"454dddfdfdfd\"} 

мне нужно, чтобы сделать его

<<"{\"message\":\"tttfdfdfdfdddtt\",\"customid\":\"454dddfdfdfd\"}">> 

и передать в функцию. любая помощь приветствуется.

ответ

0

Если

{\ "сообщение \": \ "tttfdfdfdfdddtt \", \ "customid \": \ "454dddfdfdfd \"}

является строкой, вам просто нужно преобразовать это двоичный с Эрл: list_to_binary/1

+0

P_A ... спасибо это работает ... как преобразовать его в нормальную строку, когда мы имеем '<<"ererereer">>' –

2
Eshell V6.2 (abort with ^G) 
1> unicode:characters_to_binary("{\"message\":\"tttfdfdfdfdddtt\",\"customid\":\"454dddfdfdfd\"}"). 
<<"{\"message\":\"tttfdfdfdfdddtt\",\"customid\":\"454dddfdfdfd\"}">> 

Затем вы можете использовать jsx разобрать его в список

2> jsx:decode(<<"{\"message\":\"tttfdfdfdfdddtt\",\"customid\":\"454dddfdfdfd\"}">>). 
[{<<"message">>,<<"tttfdfdfdfdddtt">>}, 
{<<"customid">>,<<"454dddfdfdfd">>}] 

Или в карту

3> jsx:decode(<<"{\"message\":\"tttfdfdfdfdddtt\",\"customid\":\"454dddfdfdfd\"}">>, [return_maps]). 
#{<<"customid">> => <<"454dddfdfdfd">>, 
    <<"message">> => <<"tttfdfdfdfdddtt">>} 
+0

НЕТ, то почему мы должны использовать дополнительную библиотеку когда это возможно с помощью основных функций. –

+0

'list_to_binary/1' может принимать только до 0..255. Например, 'list_to_binary ([322])' приведет к сбою. – brucify