【发布时间】:2018-12-13 09:15:43
【问题描述】:
我的 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
【问题讨论】:
-
编译器抱怨我的 case 语句的第一个分支。我觉得我很接近了,但我不确定如何获得分配给
ProviderWithVal构造函数的值。
标签: json functional-programming decode elm