2016-05-23 67 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 –