Elm,JSON解码器:如何解码空字符串?

5

如何处理空响应(即没有字符串的响应)是最佳方式?

尽管响应代码为200,但Elm返回错误,因为空响应不是有效的JSON。

以下是我的当前代码:

decodeAlwaysTrue : Json.Decode.Decoder Bool
decodeAlwaysTrue =
  Json.Decode.succeed True

Http.send Http.defaultSettings httpConfig
  |> Http.fromJson decodeAlwaysTrue
  |> Task.perform FetchFail DeleteUserSuccess

编辑1:

这是一次POST操作,所以我不能使用getString方法。


我喜欢你目前的方法。succeed说:“无论你在这里得到什么,都没问题。” - Søren Debois
1
@SørenDebois 不完全是这样。如果响应代码为2xx且响应是有效的JSON,则会成功。 - Guilhem Soulas
2个回答

3
你可以使用 Http 模块中的 getString 函数。这将返回 HTTP 请求所返回的字符串,而不会尝试将其转换为 Json 值。
如果你需要使用 Http.send,则可以尝试以下方法:
Http.send Http.defaultSettings httpConfig
  |> Task.perform FetchFail (always DeleteUserSuccess)

这假设DeleteUserSuccess被更改为不带类型参数的定义:
type Msg =
  ...
  DeleteUserSuccess

0

看起来你从未收到过Json响应,所以最好使用Http.getString

type Result = FetchFail Error
            | DeleteUserSuccess

Http.getString address
  |> Task.perform FetchFail (\s -> DeleteUserSuccess)

由于成功的获取不包含任何信息,您可以忽略它并返回DeleteUserSuccess,而不管字符串的内容如何。


请参见我初始问题中的EDIT1。 - Guilhem Soulas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接