Мой json выглядит так:
{"name": "providerWithVal", "value": "example"}
или примерно так:
{"name": "provider2"}
или
{"name": "provider3"}
Мой тип соединения Elm определяется следующим образом:
type Provider
= ProviderWithVal String
| Provider2
| Provider3
Я могу написать декодер для объединенного типа без данных.Но ProviderWithVal
принимает строку, и я не уверен, как заставить все это работать.
Это то, что у меня есть:
import Json.Decode as D
providerDecoder : D.Decoder Provider
providerDecoder =
D.field "name" D.string |> D.andThen providerNameDecoder
providerNameDecoder : String -> D.Decoder Provider
providerNameDecoder string =
case string of
"providerWithVal" -> D.succeed ProviderWithVal
"provider2" -> D.succeed Provider2
"provider3" -> D.succeed Provider3
_ -> D.fail <| "Invalid provider: " ++ string