エラーオブジェクトまたは期待値のいずれかが含まれているstatus
値と値を含む連想配列で応答をラップする API があります。data
data
悪い反応:
{
"status":"error",
"data":{
"errormessage":"Duplicate entry '101' for key 'PRIMARY'",
"errorcode":1062
}
}
正常な応答:
{
"status":"success",
"data":{
"user": {
"id": 1,
}
}
}
これらの応答を検証したい:
public class func validateResponse(_ data : Data) -> WebServicesError?
{
struct WTPResponse : Decodable
{
let status : String
let data : Data
}
do {
let response = try JSONDecoder().decode(WTPResponse.self, from: data) // FAILS HERE
if let wtpError = try? JSONDecoder().decode(WTPAPIError.self, from: response.data) {
return WebServicesError.wtpError(WTPAPIError(code: wtpError.code, message: wtpError.message))
}
}
catch let error {
return WebServicesError.init(error: error)
}
return nil
}
エラーで応答オブジェクトをデコードしようとすると、常に失敗します:オブジェクトを Swift type としてExpected to decode Data but found a dictionary instead.
デコードできると思っていましたが、実際には辞書です。data
Data
[String: Any]
Data
1) API から受け取った をどのように検証できますか?
data
2) JSON 応答の " " 部分のみData
を型として抽出できる方法はありUser
ますか?status
data