Skip to content

Instantly share code, notes, and snippets.

@habibutsu
Last active October 10, 2017 10:52
Show Gist options
  • Save habibutsu/372d4f4f05f31fc7e80c963a970d875f to your computer and use it in GitHub Desktop.
Save habibutsu/372d4f4f05f31fc7e80c963a970d875f to your computer and use it in GitHub Desktop.
Elm examples
import Html exposing (text)
import Json.Decode
type alias Car =
{ sensor1: Int
, sensor2: Int
}
type DrivingMode
= Self
| Record
| Free
type alias Prameters =
{ mode: DrivingMode
}
fromStringDrivingMode : String -> Json.Decode.Decoder DrivingMode
fromStringDrivingMode string =
case string of
"self" ->
Json.Decode.succeed Self
"record" ->
Json.Decode.succeed Record
"free" ->
Json.Decode.succeed Free
somethingElse ->
Json.Decode.fail <| "Unknown theme: " ++ somethingElse
decodeDrivingMode : Json.Decode.Decoder DrivingMode
decodeDrivingMode =
Json.Decode.string
|> Json.Decode.andThen fromStringDrivingMode
parametersJsonDecoder =
Json.Decode.map Prameters
(Json.Decode.field "mode" decodeDrivingMode)
carJsonDecoder =
Json.Decode.map2 Car
(Json.Decode.field "sensor1" Json.Decode.int)
(Json.Decode.field "sensor2" Json.Decode.int)
main =
let
raw_json = "{\"sensors\": {\"sensor1\": 10, \"sensor2\": 10}," ++
" \"parameters\": {\"mode\": \"free\"}}"
in
let
obj1 = (Json.Decode.decodeString (Json.Decode.at ["sensors"] carJsonDecoder) raw_json)
obj2 = (Json.Decode.decodeString (Json.Decode.at ["parameters"] parametersJsonDecoder) raw_json)
in
let
_ = Debug.log "object" obj1
_ = Debug.log "object" obj2
in
text "Hello, World!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment