#json #swift #swift3 #alamofire
#json #swift #swift3 #alamofire
Вопрос:
Мой код таков
import UIKit
import Alamofire
class ViewController: UIViewController {
var young = "https://jsonplaceholder.typicode.com/posts"
override func viewDidLoad() {
super.viewDidLoad()
callAlamo(url: young)
}
func callAlamo(url: String){
Alamofire.request(url).responseJSON { (response) in
let responseJSON = response.data
if responseJSON == nil{
print("response is empty")
}else{
print("Jon is (responseJSON)")
self.parseJson(JSONData: responseJSON!)
}
}
}
func parseJson(JSONData: Data){
do{
let readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers)
for i in 0..<(readableJSON as AnyObject).count{
print(readableJSON[i] as String)
}
}catch{
print(error)
}
}
}
Мне нужен каждый элемент массива внутри этого Json.
Комментарии:
1. Есть> 20 вопросов об одном и том же сообщении об ошибке. Пожалуйста, проверьте, не было ли ответа на вашу проблему раньше.
2. Можете ли вы показать мне свой JSON, что вы получаете сервис form?
Ответ №1:
Попробуйте использовать приведенный ниже код:
Alamofire.request(url).responseJSON { (response) in
switch response.result {
case .success(let value) :
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization
if let JSON = response.result.value as! [String:AnyObject]!{
print("JSON: ",JSON)
}
case .failure(let encodingError):
completionHandler(APIResponse.init(status: "failure", response: nil, result:nil))
}
}
Ответ №2:
При использовании responseJSON
обработчика JSON
данные уже были проанализированы внутри JSONSerialization
. Вы НЕ хотите пытаться анализировать его снова, иначе вы дважды анализируете данные ответа сервера, что очень плохо сказывается на производительности. Все, что вам нужно сделать, это следующее:
Alamofire.request(url).responseJSON { response in
if let json = response.result.value {
print("Parsed JSON: (json)")
// Now you can cast `json` to a Dictionary or Array
}
}