質問

HTTPヘッダーであるタプルのリストがあります。リストを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]).

または、楽しみの使用を好む場合:

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]).
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top