2016-05-23 68 views
5

什么是最好的方式来处理一个空的(根本没有字符串)响应?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

+0

我喜欢你目前的做法。 “成功”说:“不管你在这里得到什么,都没关系。” –

+1

@SørenDebois不完全。如果响应代码是2xx并且响应是有效的JSON,它将成功。 –

回答

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) 

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

+0

请参阅我的第一个问题中的编辑1 –