2017-06-30 67 views
0

我遞歸地解析地圖以轉換爲json。這裏是我的o輸出fn:在Erlang中檢測字符列表作爲字符串

hash(Map) -> 
    binary:bin_to_list(jiffy:encode(Map)). 

atomJSON(Atom) -> binary:list_to_bin(atom_to_list(Atom)). 

% json output 
o(Number) when is_number(Number) -> 
    Number; 
o(Atom) when is_atom(Atom) -> 
    atomJSON(Atom); 
o(Tuple) when is_tuple(Tuple) -> 
    o(tuple_to_list(Tuple), []); 
o(List) when is_list(List) -> 
    o(List, []); 
o(Map) when is_map(Map) -> %expects atoms for internal map keys 
    o(maps:keys(Map), Map, #{}). 

o([], List) -> 
    lists:reverse(List); 
o([H | T], List) -> 
    o(T, [o(H) | List]). 

o([], _Map, Res) -> 
    hash(Res); 
o([H | T], Map, Res) -> 
    o(T, Map, maps:put(atomJSON(H), o(maps:get(H, Map)), Res)). 

其中大部分轉換爲JSON罰款。狀態鍵&作爲字符串的值不。

我知道erl shell方便地檢測到一個字符串,但is_string/1不存在。如何檢測字符串並將其轉換,以便我可以在JavaScript中顯示正確的文本?

enter image description here

2> [123, 34, 115, 116, 97, 116, 117, 115, 34, 58]. 
"{\"status\":" 
+0

你想在Erlang或JavaScript中檢測到它嗎?對於Erlang,你可以使用這個:https://stackoverflow.com/a/8035531/320615。 – Dogbert

+0

你好,狗狗!是的,看起來很有用。從這我可以計算出什麼時候需要將我的字符列表轉換爲JSON可以作爲字符串讀取的內容。 – quantumpotato

+0

看起來我可以使用<>按照https://stackoverflow.com/questions/42044491/encoding-erlang-maps-as-json-with-strings-for-parsing-by-javascript – quantumpotato

回答

0

只需選中每個元素都值從8到255 整數,但我認爲二郎做這項工作。所以也許原因是你陣列中的一些元素的值不在8到255的範圍內。