【问题标题】:Looping through JSON with SwiftyJSON使用 SwiftyJSON 循环遍历 JSON
【发布时间】:2016-04-13 00:49:52
【问题描述】:

我正在尝试使用 SwiftyJSON 遍历 JSON 值,以便在 UIAlertController 中显示它们。

在我使用 Alamofire 的 API 调用中,我使用返回一些 JSON 数据

if((responseData.result.value) != nil) {

 let json = JSON(responseData.result.value!)
 let token = json["api_token"].string

 response(token: token, errorVal: json)

} else {
  return
}

然后在我的 VC 中,我将这些数据用于:

if let errorVal = errorVal {

var errorMessages = ""

for (_,subJson):(String, JSON) in errorVal {

   errorMessages = errorMessages + String(subJson) + "\n"
 }

}

errorVal 正在返回:

{
  "email" : [
    "The email field is required."
  ],
  "password" : [
    "The password field is required."
  ]
}

错误消息

[
"The email field is required."
]
[
"The password field is required."
]

但我希望 errorMessages 改为显示:

The email field is required
The password field is required

如何遍历 JSON 并仅获取值?

【问题讨论】:

    标签: ios json swift swifty-json


    【解决方案1】:

    由于 subJson 是一个字符串数组,所以获取第一个。

    if let errorVal = errorVal {
        var errorMessages = ""
    
        for (_,subJson):(String, JSON) in errorVal {
            // Looks like subJson is an array, so grab the 1st element
            let s = subJson[0].string
            errorMessages = errorMessages + s + "\n"
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用这样的东西:

      var newMessage = String(subJson).stringByReplacingOccurrencesOfString("[", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
          newMessage = newMessage.stringByReplacingOccurrencesOfString("]", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
          errorMessages = errorMessages + newMessage + "\n"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-27
        • 2015-04-06
        • 2018-03-13
        • 2017-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多