json - 二郎 : Tuple List into JSON

标签 json erlang tuples mochiweb mochijson2

我有一个元组列表,它们是 http header 。我想将列表转换为 JSON 对象。我尝试 mochijson2 但无济于事。

所以我有以下几点:

[{'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 字符串):
<<"{\"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\"}">>

我试试这个,其中 A 是元组的原始列表:
list_to_binary(mochijson2:encode(A)).

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

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

最佳答案

您需要将里面的那些字符串转换成二进制 之前 你将它发送到编码器。 mochijson2 编码器仅将其视为整数列表并将其作为数组输出。所以mochijson2需要你转换{'key', "val"}进入 {'key', <<"val">>}
在你的代码中试试这个:

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]).

或者,如果您更喜欢使用 Funs:
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]).

关于json - 二郎 : Tuple List into JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3923400/

相关文章:

javascript - 使用数据表呈现多维嵌套 JSON 响应

javascript - 从 JSON 对象中减去数组 JavaScript

python - 在 for 语句中更改列表(元组)列表的值

异常中的Python字符串转换为元组

c - 在 C 中创建一个元组

javascript - 自动将所有文件下载到计算机上用户首选的位置

android - 如何在没有成员标签的情况下将 JsonElement 转换为 Json?

Erlang打印整个数据结构

Erlang:获取多主机集群上所有节点的列表

erlang - 收集有关 simple_one_for_one worker 的信息