SwiftyJSON - 无法访问JSON数据

时间:2015-06-07 12:16:16

标签: swift alamofire swifty-json

我正在尝试解析由以下代码生成的服务器响应(使用grape开发的rails app的api)

  if user.persisted?
    return user.to_json
  else
    error!(user.errors.to_json, 400)
  end

当用户提交错误数据时,我会看到服务器的以下响应:

{
    response = "{\"email\":[\"is invalid\"],\"password\":[\"is too short (minimum is 8 characters)\"]}";
    "response_type" = error;
}

我在客户端使用以下代码:

API.registerUser(email: emailTextField.text, password: passwordTextField.text, password_confirmation: passwordConfirmationTextField.text) {
    (data, error, statusCode) in

    var errorMessage: String

    if (data == nil && statusCode == nil) {
        errorMessage = "Server error. Please try again later"
    } else if (statusCode == 400) {
        var errors = JSON(data!)["response"]

        errorMessage = "Registration error: \n"

        // Display error notice with details

        errorMessage = errorMessage + errors.stringValue

        }

        NSLog(errorMessage)
}

在此代码中,错误变量包含" {\" email \":[\"无效\"],\"密码\":[\"太短(最少8个字符)\"]}" 但我无法使用错误[" email" ] - 它不包含任何数据。如何通过错误循环并访问所有数据?

2 个答案:

答案 0 :(得分:0)

是的,您需要解析响应键才能将其作为字典读取。看起来你可能不得不在解析之前解除响应,除非你的解析器为你解决了这个问题。

答案 1 :(得分:0)

问题出在服务器端,因为它生成了转义的json。我用以下

修复了它
error!(user.errors, 400)

这是我的错误:))