Recherche…


Introduction

Comment utiliser Json.Decode pour créer des décodeurs personnalisés, par exemple, décodage en types d'union et types de données définis par l'utilisateur

Décodage en type d'union

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow