5
Iは、以下のようなELM型にJSONをデコードする必要があります型の値にエルム複雑なカスタムJSONデコーダ
タイプ
type User = Anonymous | LoggedIn String
type alias Model =
{ email_id : User
, id : Id
, status : Int
, message : String
, accessToken : AccessToken
}
JSONメッセージ1
{
"status": 0,
"message": "Error message explaining what happened in server"
}
Model {
"email_id": Anonymous
, id: 0
, status: 0
, message: json.message
, accessToken: ""
}
JSONメッセージ2種類の値に
{
"status": 1,
"email_id": "[email protected]"
"token": "asdfaz.adfasggwegwegwe.g4514514ferf"
"id": 234
}
Model {
"email_id": LoggedIn json.email_id
, id: json.id
, status: json.status
, message: ""
, accessToken: json.token
}
デコーダ情報上方
は、 "メッセージ" は、必ずしも存在せず、EMAIL_ID/ID /トークンは、常にではありませんプレゼント。ニレ
感謝を更新しました。できます。 Tasksと 'andThen'がここで使用されている理由については、少し不明なようにJSONデコーダの動作を理解するためにいくつかのリンクを渡すことができますか?それは非常に一般的な目的ではありますが、私はTasksをタスクとの約束と考えていました。 –
リンクをもう一度見てください。それは['Task.andThen'](http://package.elm-lang.org/packages/elm-lang/core/3.0.0/Task#andThen)を使用していないので、同じ関数を使用していますJsonデコーダの名前。両方のAPIセットを見てみると、 '成功'と '失敗'のような類似点があります。これは関数型言語の共通のパターンである基本的なMonadパターンと整列していますが、ElmはMonadsを理解するのは敢えて避けますが、Monadsを理解するのは大変です。あなたはJsonを解析するためにMonadsを理解する必要はありません。 –