Frage

ich eine Liste von Tupeln haben, die HTTP-Header. Ich mag die Liste in ein JSON-Objekt konvertieren. Ich versuche mochijson2, aber ohne Erfolg.

So habe ich die folgende:

[{'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"}]

Und möchte diesen (einen binären JSON-String):

<<"{\"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\"}">>

Und ich versuche, dies in der A die ursprüngliche Liste von Tupeln ist:

list_to_binary(mochijson2:encode(A)).

Ich vermute, ich brauche es in ein Format zu bekommen, dass mochijson2 besser interpretieren kann. Und dann in binären konvertieren. Oder Figur aus einer Weise, die alle Zeichen als Zeichenfolgen dargestellt haben (und nicht etwa eine Liste von ganzen Zahlen).

schätzte, wenn Sie mich in der richtigen Richtung mit einigem Beispielcode zeigen könnten.

War es hilfreich?

Lösung

Sie müssen diese Strings innerhalb dort in binäre konvertieren, bevor Sie es an das Messgerät sendet. Der mochijson2 Encoder hält gerade dies als eine Liste von ganzen Zahlen und gibt es als ein Array. So mochijson2 Bedürfnisse Sie convert{'key', "val"} in {'key', <<"val">>}

Versuchen Sie dies in Ihrem Code:

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

Oder wenn Sie es vorziehen, mit 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]).
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top