Elm,JSON解码器:如何解码空字符串?
问题描述:
什么是最好的方式来处理一个空的(根本没有字符串)响应?Elm,JSON解码器:如何解码空字符串?
尽管响应代码是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
EDIT1:
这是一个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)
由于成功的get不包含任何信息,您可以忽略它并返回DeleteUserSuccess
而不管字符串的内容如何。
+0
请参阅我的第一个问题中的编辑1 –
我喜欢你目前的做法。 “成功”说:“不管你在这里得到什么,都没关系。” –
@SørenDebois不完全。如果响应代码是2xx并且响应是有效的JSON,它将成功。 –