2017-01-31 4 views
0

Ich mag würde die folgenden abgerufenen Daten mit Swift 3.JSON-Parsing-Fehler in Swift 3

{"station":"Brooklyn Bridge","heights":[{"dt":1485865800,"date":"2017-01-31T12:30+0000","height":0.130},{"dt":1485867600,"date":"2017-01-31T13:00+0000","height":0.318},{"dt":1485869400,"date":"2017-01-31T13:30+0000","height":0.472},{"dt":1485871200,"date":"2017-01-31T14:00+0000","height":0.586},{"dt":1485873000,"date":"2017-01-31T14:30+0000","height":0.658},{"dt":1485874800,"date":"2017-01-31T15:00+0000","height":0.693},{"dt":1485876600,"date":"2017-01-31T15:30+0000","height":0.696},{"dt":1485878400,"date":"2017-01-31T16:00+0000","height":0.672},{"dt":1485880200,"date":"2017-01-31T16:30+0000","height":0.619},{"dt":1485882000,"date":"2017-01-31T17:00+0000","height":0.525},{"dt":1485883800,"date":"2017-01-31T17:30+0000","height":0.379},{"dt":1485885600,"date":"2017-01-31T18:00+0000","height":0.179},{"dt":1485887400,"date":"2017-01-31T18:30+0000","height":-0.058},{"dt":1485889200,"date":"2017-01-31T19:00+0000","height":-0.300},{"dt":1485891000,"date":"2017-01-31T19:30+0000","height":-0.515},{"dt":1485892800,"date":"2017-01-31T20:00+0000","height":-0.681},{"dt":1485894600,"date":"2017-01-31T20:30+0000","height":-0.797},{"dt":1485896400,"date":"2017-01-31T21:00+0000","height":-0.870},{"dt":1485898200,"date":"2017-01-31T21:30+0000","height":-0.907},{"dt":1485900000,"date":"2017-01-31T22:00+0000","height":-0.906},{"dt":1485901800,"date":"2017-01-31T22:30+0000","height":-0.859},{"dt":1485903600,"date":"2017-01-31T23:00+0000","height":-0.757},{"dt":1485905400,"date":"2017-01-31T23:30+0000","height":-0.604},{"dt":1485907200,"date":"2017-02-01T00:00+0000","height":-0.414},{"dt":1485909000,"date":"2017-02-01T00:30+0000","height":-0.208},{"dt":1485910800,"date":"2017-02-01T01:00+0000","height":-0.007},{"dt":1485912600,"date":"2017-02-01T01:30+0000","height":0.174},{"dt":1485914400,"date":"2017-02-01T02:00+0000","height":0.324},{"dt":1485916200,"date":"2017-02-01T02:30+0000","height":0.437},{"dt":1485918000,"date":"2017-02-01T03:00+0000","height":0.510},{"dt":1485919800,"date":"2017-02-01T03:30+0000","height":0.548},{"dt":1485921600,"date":"2017-02-01T04:00+0000","height":0.558},{"dt":1485923400,"date":"2017-02-01T04:30+0000","height":0.544},{"dt":1485925200,"date":"2017-02-01T05:00+0000","height":0.501},{"dt":1485927000,"date":"2017-02-01T05:30+0000","height":0.416},{"dt":1485928800,"date":"2017-02-01T06:00+0000","height":0.277},{"dt":1485930600,"date":"2017-02-01T06:30+0000","height":0.087},{"dt":1485932400,"date":"2017-02-01T07:00+0000","height":-0.135},{"dt":1485934200,"date":"2017-02-01T07:30+0000","height":-0.355},{"dt":1485936000,"date":"2017-02-01T08:00+0000","height":-0.539},{"dt":1485937800,"date":"2017-02-01T08:30+0000","height":-0.671},{"dt":1485939600,"date":"2017-02-01T09:00+0000","height":-0.751},{"dt":1485941400,"date":"2017-02-01T09:30+0000","height":-0.791},{"dt":1485943200,"date":"2017-02-01T10:00+0000","height":-0.799},{"dt":1485945000,"date":"2017-02-01T10:30+0000","height":-0.774},{"dt":1485946800,"date":"2017-02-01T11:00+0000","height":-0.706},{"dt":1485948600,"date":"2017-02-01T11:30+0000","height":-0.590},{"dt":1485950400,"date":"2017-02-01T12:00+0000","height":-0.428},{"dt":1485952200,"date":"2017-02-01T12:30+0000","height":-0.234},{"dt":1485954000,"date":"2017-02-01T13:00+0000","height":-0.028},{"dt":1485955800,"date":"2017-02-01T13:30+0000","height":0.170},{"dt":1485957600,"date":"2017-02-01T14:00+0000","height":0.344},{"dt":1485959400,"date":"2017-02-01T14:30+0000","height":0.483},{"dt":1485961200,"date":"2017-02-01T15:00+0000","height":0.581},{"dt":1485963000,"date":"2017-02-01T15:30+0000","height":0.638},{"dt":1485964800,"date":"2017-02-01T16:00+0000","height":0.659},{"dt":1485966600,"date":"2017-02-01T16:30+0000","height":0.652},{"dt":1485968400,"date":"2017-02-01T17:00+0000","height":0.619},{"dt":1485970200,"date":"2017-02-01T17:30+0000","height":0.552},{"dt":1485972000,"date":"2017-02-01T18:00+0000","height":0.440},{"dt":1485973800,"date":"2017-02-01T18:30+0000","height":0.271},{"dt":1485975600,"date":"2017-02-01T19:00+0000","height":0.052},{"dt":1485977400,"date":"2017-02-01T19:30+0000","height":-0.191},{"dt":1485979200,"date":"2017-02-01T20:00+0000","height":-0.423},{"dt":1485981000,"date":"2017-02-01T20:30+0000","height":-0.612},{"dt":1485982800,"date":"2017-02-01T21:00+0000","height":-0.744},{"dt":1485984600,"date":"2017-02-01T21:30+0000","height":-0.824},{"dt":1485986400,"date":"2017-02-01T22:00+0000","height":-0.867},{"dt":1485988200,"date":"2017-02-01T22:30+0000","height":-0.880},{"dt":1485990000,"date":"2017-02-01T23:00+0000","height":-0.862},{"dt":1485991800,"date":"2017-02-01T23:30+0000","height":-0.800},{"dt":1485993600,"date":"2017-02-02T00:00+0000","height":-0.689},{"dt":1485995400,"date":"2017-02-02T00:30+0000","height":-0.529},{"dt":1485997200,"date":"2017-02-02T01:00+0000","height":-0.337},{"dt":1485999000,"date":"2017-02-02T01:30+0000","height":-0.131},{"dt":1486000800,"date":"2017-02-02T02:00+0000","height":0.068},{"dt":1486002600,"date":"2017-02-02T02:30+0000","height":0.244},{"dt":1486004400,"date":"2017-02-02T03:00+0000","height":0.387},{"dt":1486006200,"date":"2017-02-02T03:30+0000","height":0.490},{"dt":1486008000,"date":"2017-02-02T04:00+0000","height":0.555},{"dt":1486009800,"date":"2017-02-02T04:30+0000","height":0.587},{"dt":1486011600,"date":"2017-02-02T05:00+0000","height":0.593},{"dt":1486013400,"date":"2017-02-02T05:30+0000","height":0.572},{"dt":1486015200,"date":"2017-02-02T06:00+0000","height":0.516},{"dt":1486017000,"date":"2017-02-02T06:30+0000","height":0.411},{"dt":1486018800,"date":"2017-02-02T07:00+0000","height":0.249},{"dt":1486020600,"date":"2017-02-02T07:30+0000","height":0.041},{"dt":1486022400,"date":"2017-02-02T08:00+0000","height":-0.185},{"dt":1486024200,"date":"2017-02-02T08:30+0000","height":-0.391},{"dt":1486026000,"date":"2017-02-02T09:00+0000","height":-0.551},{"dt":1486027800,"date":"2017-02-02T09:30+0000","height":-0.655},{"dt":1486029600,"date":"2017-02-02T10:00+0000","height":-0.715},{"dt":1486031400,"date":"2017-02-02T10:30+0000","height":-0.745},{"dt":1486033200,"date":"2017-02-02T11:00+0000","height":-0.753},{"dt":1486035000,"date":"2017-02-02T11:30+0000","height":-0.733},{"dt":1486036800,"date":"2017-02-02T12:00+0000","height":-0.672},{"dt":1486038600,"date":"2017-02-02T12:30+0000","height":-0.561}]} 

Speziell analysieren, würde Ich mag alle Instanzen von „dt“ erhalten und „Datum“.

Ich habe den folgenden Code bekam:

{ 
     let parsedData = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any] 
     let currentdt = parsedData["dt"] as! [String:Any] 

     print(currentdt) 

     let currentDate = currentdt["date"] as! Double 
     print(currentDate) 
    } catch let error as NSError { 
     print(error) 
    } 

dass der folgende Fehler ergibt:

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

Alle Hinweise, was ich falsch mache?

+0

Website Anmerkung: Sie selten mit 'wie werfen wollen'!. Verwenden Sie stattdessen 'if let'-Anweisungen mit einem Safe-Downcast mit' as? '. – JAL

Antwort

3

Im Grunde werden die Optionswaps niemals erzwungen, es sei denn, sie sind zu 100% garantiert werthaltig. Es wird dringend empfohlen, beim Laden von JSON-Daten über das Internet optionale Bindungen zu verwenden.

JSON ist ziemlich einfach zu lesen, {} repräsentiert ein Wörterbuch, [] ein Array.

dt und date sind in einer Reihe von Wörterbüchern für Schlüssel heights

typealias JSONDictionary = [String:Any] 

do { 
    if let parsedData = try JSONSerialization.jsonObject(with: data!, options: []) as? JSONDictionary, 
     let heights = parsedData["heights"] as? [JSONDictionary] { 
     for height in heights { 
      print(height["dt"] as? Int ?? "0") 
      print(height["date"] as? String ?? "n/a") 
     } 
    } 
} catch { 
    print(error) 
}