Sök…


Introduktion

Hur man använder Json.Decode för att skapa anpassade avkodare, till exempel avkodning till facktyper och användardefinierade datatyper

Avkodning till facklig typ

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow