raineorshine
4/16/2016 - 2:21 AM

example.json

 { 
    "label": "Meditation", 
    "checkins":[
        { "color": "Red", "date": "4/15/16" }
    ]
}
import Json.Encode
import Json.Decode exposing ((:=))
-- elm-package install --yes circuithub/elm-json-extra
import Json.Decode.Extra exposing ((|:))

type alias HabitRecord =
    { label : String
    , checkins : List ComplexType
    }

decodeHabitRecord : Json.Decode.Decoder HabitRecord
decodeHabitRecord =
    Json.Decode.succeed HabitRecord
        |: ("label" := Json.Decode.string)
        |: ("checkins" := Json.Decode.list decodeComplexType)

encodeHabitRecord : HabitRecord -> Json.Encode.Value
encodeHabitRecord record =
    Json.Encode.object
        [ ("label",  Json.Encode.string <| record.label)
        , ("checkins",  Json.Encode.list <| List.map encodeComplexType <| record.checkins)
        ]