Erlang:将元组列表转换为JSON

Erlang:将元组列表转换为JSON,json,erlang,tuples,mochiweb,mochijson2,Json,Erlang,Tuples,Mochiweb,Mochijson2,我有一个元组列表,这些元组是http头。我想将列表转换为JSON对象。我试过Mochijson 2,但没有用 因此,我有以下几点: [{'Accept',"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}, {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, {'Accept-Encoding',"gzip,deflate"}, {'Accept-Lang

我有一个元组列表,这些元组是http头。我想将列表转换为JSON对象。我试过Mochijson 2,但没有用

因此,我有以下几点:

[{'Accept',"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"},
 {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"},
 {'Accept-Encoding',"gzip,deflate"},
 {'Accept-Language',"en-us,en;q=0.5"},
 {'Cache-Control',"max-age=0"},
 {'Connection',"close"},
 {'Cookie',"uid=CsDbk0y1bKEzLAOzAwZUAg=="},
 {'User-Agent',"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10"}]
并希望这样(一个二进制JSON字符串):

我想我需要把它转换成一种mochijson2可以更好地解释的格式。然后转换成二进制。或者找到一种将所有字符表示为字符串的方法(而不是将一些字符表示为整数列表)


如果您能用一些示例代码为我指出正确的方向,我将不胜感激。

您需要将其中的字符串转换为二进制,然后才能将其发送到编码器。mochijson2编码器只是将其视为整数列表,并将其作为数组输出。所以mochijson2需要您将
{'key',“val”}
转换为
{'key',}

在代码中尝试以下操作:

Original = [
  {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
  {'Accept-Encoding',"gzip,deflate"}
].
StingConverted = [ {X,list_to_binary(Y)} || {X,Y} <- Original ].
Output = mochijson2:encode(StingConverted).
io:format("This is correct: ~s~n", [Output]).

谢谢你,乔恩!这正是我想要的。列表理解很好,我个人比较喜欢。
list_to_binary(mochijson2:encode(A)).
Original = [
  {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
  {'Accept-Encoding',"gzip,deflate"}
].
StingConverted = [ {X,list_to_binary(Y)} || {X,Y} <- Original ].
Output = mochijson2:encode(StingConverted).
io:format("This is correct: ~s~n", [Output]).
Original = [
  {'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}, 
  {'Accept-Encoding',"gzip,deflate"}
].
ConvertFun = fun({X,Y}) -> {X,list_to_binary(Y)} end.
StingConverted = lists:map(ConvertFun, Original).
Output = mochijson2:encode(StingConverted).
io:format("This is correct: ~s~n", [Output]).