を考えると、次の種類:デコードネストされたJSON値(0.18)
type alias Wrapper =
{ data : Data }
type alias Data =
{ name : String }
そして、次のJSON:
{"data": {"name": "Keith"}}
私は私がHTTPを有効にすることを可能にするデコーダを書くことができますどのようにWrapper
エイリアスのインスタンスへの応答?
私は、実行可能なソリューションを見つけることなく、コアライブラリJson.Decode.PipelineとJson.Decode.Extraを使用していくつかのアプローチを試みました。これは、エンドユーザーの問題点巻き上げ
:
になりdataDecoder =
succeed Data
|> andMap (field "name" Decode.string)
wrapperDecoder =
succeed Wrapper
|> andMap (field "data" dataDecoder)
:
BadPayload "Expecting an object with a field named
name
but instead got: {\"data\":{\"name\":\"foo\"}}" { status = { code = 200, message = "OK" }, headers = Dict.fromList [("cache-control","max-age=0, private, must-revalidate"),("content-type","application/json; charset=utf-8")], url = " http://localhost:5000//users/foo ", body = "{\"data\":{\"name\":\"foo\"}}" }
EDITここ
は私の最新の試みです。 I はで正しいデコーダをHttp.post
に渡しましたが、Http.send
は実際にはHttp.post
をラップする関数を呼び出していませんでした。 Doh。
あなたがそれを理解してくれてうれしい! –