SwiftyJSON - 无法访问 JSON 数据

Posted

技术标签:

【中文标题】SwiftyJSON - 无法访问 JSON 数据【英文标题】:SwiftyJSON - no access to JSON data 【发布时间】:2015-06-07 12:16:16 【问题描述】:

我正在尝试解析以下代码产生的服务器响应(使用葡萄开发的 Rails 应用程序的 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\":[\"is invalid\"],\"password\":[\"is too short (minimum is 8 characters)\"] " 但我不能使用错误["email"] - 它不包含任何数据。如何遍历错误并访问所有数据?

【问题讨论】:

解析 JSON,也许? 【参考方案1】:

是的,您需要解析响应键才能将其作为字典读取。看起来您可能必须在解析响应之前取消转义,除非您的解析器为您处理。

【讨论】:

【参考方案2】:

问题出在服务器端,因为它生成了转义的 json。我已经通过以下方式修复了它

error!(user.errors, 400)

这是我的错误:)

【讨论】:

以上是关于SwiftyJSON - 无法访问 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

SwiftyJson Swift 3 无法访问 JSON 中的字符串

无法使用 Alamofire 和 SwiftyJSON 访问数组内部的 url,JSON 响应

无法使用 Alamofire 和 SwiftyJSON 在 tableviewcell 中加载 JSON 数据

从 SwiftyJSON 块访问值时遇到问题

无法解析数据 JSON alamofire SwiftyJSON

SwiftyJSON - 无法从 JSON 字符串获取 transactionId