Как мне разобрать строку в поплавок? - PullRequest
0 голосов
/ 28 сентября 2018

Мне нужно использовать источник json, представляющий float s как string s *, и я не могу понять, как.

Это почти просто:

Json.Decode.map String.toFloat Json.Decode.string

Однако, это приводит к Maybe Float, и я бы предпочел, чтобы он вообще потерпел неудачу, если не может декодировать строку.

(*) Причина этого в том, что реальный тип данных - десятичный, поэтому «1.5»! = «1.50».Мое приложение не должно заботиться, хотя.

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете установить 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")
...