-
StackOverflow 文档
-
Elm Language 教程
-
自定义 JSON 解码器
-
解码为联合类型
import Json.Decode as JD
import Json.Decode.Pipeline as JP
type PostType = Image | Video
type alias Post = {
id: Int
, postType: PostType
}
-- assuming server will send int value of 0 for Image or 1 for Video
decodePostType: JD.Decoder PostType
decodePostType =
JD.int |> JD.andThen (\postTypeInt ->
case postTypeInt of
0 ->
JD.succeed Image
1 ->
JD.succed Video
_ ->
JD.fail "invalid posttype"
)
decodePostMap : JD.Decoder Post
decodePostMap =
JD.map2 Post
(JD.field "id" JD.int)
(JD.field "postType" decodePostType)
decodePostPipline : JD.Decoder Post
decodePostPipline =
JP.decode Post
|> JP.required "id" JD.int
|> JP.required "postType" decodePostType