Skip to content

Instantly share code, notes, and snippets.

@hipertracker
Created November 19, 2016 17:08
Show Gist options
  • Save hipertracker/6fcfcc340bc369740afa6b985e64e663 to your computer and use it in GitHub Desktop.
Save hipertracker/6fcfcc340bc369740afa6b985e64e663 to your computer and use it in GitHub Desktop.
Elm decoders for nested JSON structures
module Models.Language exposing (..)
import Json.Decode exposing (int, string, decodeString, Decoder)
import Json.Decode.Pipeline exposing (decode, required)
type alias Language =
{ id : Int
, name : String
, label : String
}
languageDecoder : Decoder Language
languageDecoder =
decode
Language
|> required "id" int
|> required "name" string
|> required "label" string
language : String -> Result String Language
language jsonString =
decodeString languageDecoder jsonString
module Models.Languages exposing (..)
import Json.Decode exposing (int, string, list, decodeString, Decoder)
import Json.Decode.Pipeline exposing (decode, required)
import Models.Language exposing (Language, languageDecoder)
type alias Languages =
{ languages : List Language }
languagesDecoder : Decoder Languages
languagesDecoder =
decode
Languages
|> required "languages" (list languageDecoder)
languages : String -> Result String Languages
languages jsonString =
decodeString languagesDecoder jsonString
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment