为什么我的php json_encode不能在alamofire中使用.responseJSON进行序列化?

问题描述 投票:0回答:2

我在服务器上的iOS应用程序上对JSON响应进行序列化时遇到了一些麻烦,它是一个PHP后端。我的应用程序使用适当的参数发送一个post请求,验证它们,将结果放入一个数组,并对其进行编码。现在这不是问题,代码工作正常。但是,它们之间的联系。看看下面的PHP代码。

echo json_encode($array)

现在来到xcode,我正在使用alamofire发送请求,如下面的代码所示

Alamofire.request(URL_USER_REGISTER, method: .post, parameters: parameters).responseString { response in
            print(response)
            }
        }

你可以在.responseString中看到它,因为我显然如果我使用.responseJSON它会抛出一个code = 3480错误,我想从我自己的响应JSON中获取特定数据。我尝试了其他方法在线修复此问题,但他们都选择了.responseString选项。

为什么会这样? JSON类型是否不兼容?这有秘密吗?

我只想从我的JSON响应中获取特定数据,例如“message”,当我得到一个字符串时它不可能...任何帮助表示赞赏!

我正在使用Alamofire 4.3

php ios json swift alamofire
2个回答
0
投票

尝试以下,以便Alamofire将通过JSONSerialization运行响应数据,具体取决于您可以使用json as? [String : Any]json as? [[String : Any]]的JSON响应类型

Alamofire.request(URL, method: .post, parameters: parameters).responseJSON { response in
    guard response.error == nil, let json = response.result.value else {
        print("Error: \(response.error?.localizedDescription ?? "no content")")
        return
    }

    if let jsonDict = json as? [String : Any] {
        print(jsonDict)
    } else if let jsonArray = json as? [[String : Any]] {
        print(jsonArray)
    }
}

0
投票

您是否尝试过打印response.value来检查它是否是有效的JSON?

© www.soinside.com 2019 - 2024. All rights reserved.