2017-03-13 1 views
1

私はエリクシールでHTTPoisonを使用してWeb要求を作っています:POSTのボディレスポンスを変換して要素を取得する方法は?

HTTPpoison.post "http://localhost:3000/mymodels"," {\"param1\": \"#{value1}\" , \"param2\":\"#{value2}\"} ", [{"Content-Type", "application/json"}] 

これは私が得る応答である:

{:ok, 
%HTTPoison.Response{body: "{\"id\":46,\"result\":18,\"param1\":\"liqueur\",\"param2\":\"quif\"}", 
    headers: [{"X-Frame-Options", "SAMEORIGIN"}, 
    {"X-XSS-Protection", "1; mode=block"}, {"X-Content-Type-Options", "nosniff"}, 
    {"Location", "http://localhost:3000/mymodels/46"}, 
    {"Content-Type", "application/json; charset=utf-8"}, 
    {"ETag", "W/\"05b8c75e0a5288c835651f48d4b8a80a\""}, 
    {"Cache-Control", "max-age=0, private, must-revalidate"}, 
    {"X-Request-Id", "1e8ae2d3-073a-4779-916a-edffc38f8b5a"}, 
    {"X-Runtime", "0.530440"}, {"Transfer-Encoding", "chunked"}], 
    status_code: 201}} 

私はエリクサーに新たなんだと私の問題は、私が取得したいですresultsresponse.body

iex(3)> response.body   
"{\"id\":46,\"results\":18,\"param1\":\"liqueur\",\"param2\":\"quif\"}" 

から要素Iは、配列/ハッシュまたはstupleにこの文字列を変換する方法がわからないですエリクサーで私はEnumで持っていますが、動作していないようです。

答えて

6

response.bodyはJSONでエンコードされた文字列です。まず、適切なElixirデータ構造に解析するためにJSONパーサーを使用する必要があります。 Poisonを使用すると、Poison.decode!/1を使用したい:

iex(1)> body = "{\"id\":46,\"results\":18,\"param1\":\"liqueur\",\"param2\":\"quif\"}" 
"{\"id\":46,\"results\":18,\"param1\":\"liqueur\",\"param2\":\"quif\"}" 
iex(2)> json = Poison.decode!(body) 
%{"id" => 46, "param1" => "liqueur", "param2" => "quif", "results" => 18} 
iex(3)> json["results"] 
18 
+0

大感謝Dogbert、毒の依存関係を入れた後、私は背中にしました。私はエリクサーは素晴らしいと思う。 – FredyK

関連する問題