Elm,JSON 解码器:如何解码空字符串?
Elm, JSON decoder: How to decode an empty string?
处理空(根本没有字符串)响应的最佳方法是什么?
尽管响应代码是 200,但 Elm returns 出错,因为空响应不是有效的 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。
您可以使用 Http
模块中的 getString
函数。这将使您返回从 HTTP 请求返回的任何字符串,而无需尝试将其转换为 Json 值。
如果您需要使用 Http.send
,那么您可以这样做:
Http.send Http.defaultSettings httpConfig
|> Task.perform FetchFail (always DeleteUserSuccess)
这假设 DeleteUserSuccess
被更改为没有类型参数的定义:
type Msg =
...
DeleteUserSuccess
您似乎永远不会收到 Json 回复,因此使用 Http.getString
可能会更好
type Result = FetchFail Error
| DeleteUserSuccess
Http.getString address
|> Task.perform FetchFail (\s -> DeleteUserSuccess)
由于成功获取不包含任何信息,您可以忽略它并且 return DeleteUserSuccess
无论字符串的内容如何。
处理空(根本没有字符串)响应的最佳方法是什么?
尽管响应代码是 200,但 Elm returns 出错,因为空响应不是有效的 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。
您可以使用 Http
模块中的 getString
函数。这将使您返回从 HTTP 请求返回的任何字符串,而无需尝试将其转换为 Json 值。
如果您需要使用 Http.send
,那么您可以这样做:
Http.send Http.defaultSettings httpConfig
|> Task.perform FetchFail (always DeleteUserSuccess)
这假设 DeleteUserSuccess
被更改为没有类型参数的定义:
type Msg =
...
DeleteUserSuccess
您似乎永远不会收到 Json 回复,因此使用 Http.getString
可能会更好type Result = FetchFail Error
| DeleteUserSuccess
Http.getString address
|> Task.perform FetchFail (\s -> DeleteUserSuccess)
由于成功获取不包含任何信息,您可以忽略它并且 return DeleteUserSuccess
无论字符串的内容如何。