如何将字符串解析为浮点数?

Oda*_*ick 4 floating-point json elm

我需要使用一个将floats表示为strings*的 json 源,但我不知道如何使用。

几乎很容易:

Json.Decode.map String.toFloat Json.Decode.string
Run Code Online (Sandbox Code Playgroud)

但是,这会产生 aMaybe Float并且如果它无法解码字符串,我希望它完全失败。

(*) 这样做的原因是真正的数据类型是十进制,所以 "1.5" != "1.50"。不过,我的应用程序不必关心。

gle*_*nsl 5

您可以安装elm-community/json-extra和使用Json.Decode.Extra.parseFloat

或者只是复制它的实现

fromMaybe : String -> Maybe a -> Decode.Decoder a
fromMaybe error val =
    case val of
        Just v ->
            Decode.succeed v

        Nothing ->
            Decode.fail error

parseFloat : Decode.Decoder Float
parseFloat =
    Decode.string |> Decode.andThen (String.toFloat >> fromMaybe "failed to parse as float")
Run Code Online (Sandbox Code Playgroud)