Skip to content

Instantly share code, notes, and snippets.

@hipertracker
Last active September 13, 2018 14:05
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hipertracker/36afd3fa89c1f446cddd0a1fd1d53b6b to your computer and use it in GitHub Desktop.
Save hipertracker/36afd3fa89c1f446cddd0a1fd1d53b6b to your computer and use it in GitHub Desktop.
Decoding nested JSON string
module Nested exposing (api)
import Json.Decode exposing (at, int, string, list, decodeString, Decoder)
import Json.Decode.Pipeline exposing (decode, required, optional, hardcoded)
data : String
data =
"""
{"languages":
[
{"id": 6, "name": "en", "label": "English"},
{"id": 7, "name": "eo", "label": "Esperanto"}
]
}
"""
type alias Language =
{ id : Int
, name : String
, label : String
}
type alias Languages =
{ languages : List Language }
languageDecoder : Decoder Language
languageDecoder =
decode
Language
|> required "id" int
|> required "name" string
|> required "label" string
languagesDecoder : Decoder Languages
languagesDecoder =
decode
Languages
|> required "languages" (list languageDecoder)
api : Result String Languages
api =
decodeString (languagesDecoder) data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment