为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的php json_encode无法在alamofire中使用.responseJSON

为什么我的php json_encode无法在alamofire中使用.responseJSON

PHP
MM们 2021-04-09 14:15:04
我在服务器上通过PHP后端在iOS应用上对JSON响应进行序列化时遇到了一些麻烦。我的应用程序发送带有适当参数的发布请求,对其进行验证,然后将结果放入数组中并对其进行编码。现在,这不是问题,代码可以正常工作。然而,它们之间的联系。查看下面的PHP代码。echo json_encode($array)现在进入xcode,我正在使用alamofire发送请求,如下面的代码所示Alamofire.request(URL_USER_REGISTER, method: .post, parameters: parameters).responseString { response in            print(response)            }        }如您在.responseString中看到的那样,因为显然如果我使用.responseJSON,它将引发代码= 3480错误,并且我想从我自己的响应JSON中获取特定数据。我尝试了其他方法来在线修复此问题,但他们都选择了.responseString选项。为什么会这样呢?JSON类型不兼容吗?这有秘密吗?我只是想从我的JSON响应中获取特定的数据,例如“消息”,当我得到一个字符串时就不可能了……感谢您的帮助!我正在使用Alamofire 4.3
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

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


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)

    }

}


查看完整回答
反对 回复 2021-04-23
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-04-23
  • 2 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信