2017-02-08 2 views
0

У меня есть Json с сегментом данных транспортных средств, которые у меня есть. Это пример этого:Swift 3 - Как управлять ответ Json

{ 
    "status": 200, 
    "data": [ 
    { 
     "brand": "chevrolet", 
     "model": "aveo", 
     "version": "2012" 
    }, 
    { 
     "brand": "Toyota", 
     "model": "Avalon", 
     "version": "2010" 
    } 
    ], 
    "benchmark": { 
    "tiempo": "~0.1453 ms", 
    "memoria": "2.1 MB" 
    } 
} 

Когда я получаю ответ, он манипулирует с помощью следующего кода:

var json: [String:Any] = [:] 
let responseString = String(data: data, encoding: .utf8) 
      do { 
       let datos = responseString?.data(using: .utf8) 
       json = try JSONSerialization.jsonObject(with: datos!, options: []) as! [String:Any]  
       status = json["estado"] as! Int 
     } catch { 
      print("error serializing JSON: \(error)") 
     } 

Моей проблема: Когда я пытаюсь манипулировать «данные», Я не знаю, как это сделать, просто знайте, что json ["data"] - это любой объект.

Я действительно ценю любой ответ с ним.

Большое спасибо.

+4

Я хотел бы начать здесь: https://developer.apple.com/swift/blog/?id=37 – Koen

+1

или здесь: https://github.com/SwiftyJSON/SwiftyJSON – sasquatch

+0

Первая вещь, вы должны 'data' , вы конвертируете их в строку, а затем обратно к данным. * Никогда * не конвертируйте данные JSON в строку. 'JSONSerialization.jsonObject (с: data, options: [])' будет работать. – Sulthan

ответ

0

Не самое лучшее решение, но работает для меня:

  let data = json["data"] as! [Any] 
      for datos in data { 
       var literal = datos as! [String:String] 
       print(literal["version"]!) 
       print(literal["model"]!) 
      } 

Спасибо большое за вашу помощь.

0

Вы должны использовать SwiftyJSON довольно проста в использовании и одна из лучших быстрых библиотек для обработки json. Проверьте это здесь: https://github.com/SwiftyJSON/SwiftyJSON

Небольшого пример с кодом:

var carsData = [] 
var status: Int 

let json = JSON(data: data) 

guard json != nil else { 
    print("JSON is nil") 
    return 
} 

status = json["status"].int 

//print the first car model 
print(json["data"][0]["model"].string) 

Это непроверенный пример, проверьте SwiftyJSON GitHub Readme.

+0

На данный момент я не могу использовать библиотеки, но я буду использовать его в своих проектах. большое спасибо – LagMaster

Смежные вопросы