Das JSON-Datenformat wird im modernen Web häufig verwendet und ist eine der gebräuchlichsten Methoden zur Datenübertragung. Viele moderne APIs, insbesondere RESTful-Webservices, unterstützen das JSON-Datenformat.
In diesem Tutorial werde ich Ihnen zeigen, wie Sie mit dem JSON-Datenformat in der Programmiersprache Swift für iOS, tvOS, watchOS und OS X arbeiten.
Für dieses Lernprogramm müssen Sie mindestens Xcode 7 ausführen, einschließlich Version 2 der Programmiersprache Swift. Swift 2 hat eine Reihe wichtiger Ergänzungen eingeführt, die wir in diesem Lernprogramm verwenden werden, z. B. Fehlerbehandlung und bewachen
Aussage.
Wie bereits erwähnt, ist JSON ein häufig verwendetes Datenformat, das beispielsweise für die Kommunikation zwischen Clients und Servern verwendet wird. Es ist aufgrund seiner Verwendbarkeit für praktisch jede mobile Plattform wie iOS, Android, Windows Phone und Webbrowser beliebt.
Das folgende Snippet ist ein Beispiel für das JSON-Datenformat. Dies ist der Ausschnitt, den wir in diesem Tutorial verwenden werden.
"dataTitle": "JSON Tutorial!", "swiftVersion": 2.1 "Benutzer": ["name": "John", "age": 25, "name": "Mark", "age": 29, "Name": "Sarah", "Alter": 22],
Wie Sie sehen, ist das JSON-Datenformat leicht verständlich. JSON ist mit zwei Auflistungstypen, Wörterbüchern und Arrays, strukturiert. Wörterbücher enthalten ein oder mehrere Schlüssel-Wert-Paare und sind in geschweifte Klammern eingeschlossen, . Arrays enthalten eine Liste der bestellten Elemente und sind in eckige Klammern eingeschlossen,
[]
. Nahezu jede Programmiersprache definiert diese Auflistungstypen, weshalb JSON von nahezu jeder Sprache unterstützt wird.
Im Folgenden finden Sie eine Liste der unterstützten Datentypen in einem JSON-Objekt:
JSON ist auch deshalb so beliebt, weil es von Menschen leicht lesbar ist und auch von Maschinen leicht analysiert und serialisiert werden kann. Beim Parsen und Serialisieren nimmt die Maschine Rohdaten auf und wandelt diese in ein Objekt um, das von der Anwendung verwendet werden kann.
Starten Sie Xcode und erstellen Sie einen neuen Spielplatz. Gib dem Spielplatz einen Namen und setze Plattform zu iOS.
Öffne das Navigator auf der linken Seite und erweitern Sie die JSON Spielplatz. Klicken Sie mit der rechten Maustaste auf Ressourcen Ordner und wählen Sie Neue Datei aus dem menü.
Benennen Sie die Datei data.json und füllen Sie die Datei mit dem folgenden JSON.
"Benutzer": ["Name": "John", "Alter": 25, "Name": "Mark", "Alter": 29, "Name": "Sarah", "Alter" : 22], "dataTitle": "JSON-Tutorial!", "SwiftVersion": 2.1
Nachdem Sie ein grundlegendes Verständnis für das JSON-Datenformat haben, ist es an der Zeit, in Swift damit zu arbeiten. Entfernen Sie den Inhalt des Spielplatzes und fügen Sie die folgenden drei Codezeilen hinzu.
import UIKit let url = NSBundle.mainBundle (). URLForResource ("Data", mit Extension: "json") let data = NSData (contentsOfURL: url!)
Mit diesem Code erhalten wir einen Verweis auf die JSON-Datei, die wir vor wenigen Augenblicken auf dem Spielplatz hinzugefügt haben, und deren Inhalt als Rohdaten erhalten. Beachten Sie, dass die URL, die wir hier erstellen, eine lokale URL für die Datei auf Ihrem Computer ist. Dies kann die URL eines Webdienstes oder eine andere URL sein, die Sie benötigen.
Es ist auch wichtig zu verstehen, dass die Rohdaten eines JSON-Objekts nicht auf diese Weise erfasst werden müssen. Der einzige wesentliche Teil ist der Rohstoff NSData
Objekt, das von einer URL stammen kann, wie im Beispiel gezeigt, einer API-Antwort oder aus einer Reihe anderer Quellen.
Der nächste Schritt ist das Parsen und Serialisieren dieser Daten in ein Objekt, das wir verwenden können. Glücklicherweise auf iOS und OS X die Foundation NSJSONSerialisierung
Die Klasse erledigt die harte Arbeit des Analysierens und Serialisierens für Sie. Fügen Sie Ihrem Spielplatz den folgenden Code-Ausschnitt hinzu.
do let object = versuche NSJSONSerialization.JSONObjectWithData (data!, Optionen: .AllowFragments), wenn das Dictionary als object das Objekt ist? [String: AnyObject] readJSONObject (Wörterbuch) catch // Handle Error
Wir schließen zunächst unsere gesamte Logik in ein fangen
Anweisung, weil die Serialisierung aus JSON-Daten möglicherweise einen Fehler auslöst. Als nächstes rufen wir die JSONObjectWithData (_: Optionen :)
Methode der NSJSONSerialisierung
Klasse, vorbei in der NSData
Objekt und einige Optionen. Die Optionen, die übergeben werden können, werden durch die definiert NSJSONReadingOptions
Struktur:
AllowFragments
Dadurch können Objekte in der ersten oder obersten Ebene der JSON-Daten, die keine Arrays oder Wörterbücher sind, gelesen werden. In den JSON-Daten, die in diesem Lernprogramm verwendet werden, umfasst dies sowohl die dataTitle
und swiftVersion
Werte.MutableLeaves
Mit dieser Option können Zeichenfolgen, die aus den JSON-Daten gelesen werden, automatisch als Instanzen von erstellt werden NSMutableString
. Diese Option ist für die Entwicklung von Objective-C relevanter. In Swift können Sie diese Option ignorieren, da Zeichenfolgen ein integrierter Basisdatentyp sind und bei der Definition mit der Zeichenfolge automatisch geändert werden können var
Stichwort.MutableContainers
Auf diese Weise können Arrays und Wörterbücher aus den JSON-Daten gelesen werden. Wie bei der MutableLeaves
Option in Swift mit der var
Wenn Sie das Array / das Wörterbuch einer Variablen zuweisen, wird es automatisch veränderbar.Zuletzt prüfen wir, ob das serialisierte Objekt dem erwarteten entspricht [String: AnyObject]
geben Sie ein und rufen Sie in diesem Fall die readJSONObject (_ :)
Funktion. Werfen wir einen Blick auf die readJSONObject (_ :)
Methode.
Sobald die gesammelten JSON-Daten analysiert und serialisiert wurden, können Sie mit ihnen genauso wie mit jedem anderen Wörterbuch interagieren. Fügen Sie Ihrem Spielplatz die folgende Funktion hinzu über das fangen
Aussage.
func readJSONObject (object: [String: AnyObject]) guard let title = object ["dataTitle"] als? String, lassen Sie version = object ["swiftVersion"] als? Float, lassen Benutzer = Objekt ["Benutzer"] als? [[String: AnyObject]] else return _ = "Swift \ (Version)" + Titel für Benutzer in Benutzern guard let name = Benutzer ["Name"] als? Zeichenfolge, Alter = Benutzer ["Alter"] als? Int else break switch age Fall 22: _ = name + "ist \ (Alter) Jahre alt." Fall 25: _ = name + "ist \ (Alter) Jahre alt." Fall 29: _ = name + "ist \ (Alter) Jahre alt." Standard: Pause
Wie Sie sehen, können mit den serialisierten JSON-Daten genau wie mit einem regulären Wörterbuch oder Array interagiert werden. Obenstehendes readJSONObject (_ :)
Die Funktion dient als Beispiel dafür, wie Sie die Informationen aus einem serialisierten JSON-Objekt extrahieren können. Beachten Sie, dass ich eine Schalter
Anweisung in der Funktion, die Zeichenfolgen in der Ausgabe des Spielplatzes einfach zu trennen.
Sobald der Spielplatz mit der Ausführung des Codes fertig ist, sollte in der Seitenleiste ein Ergebnis ähnlich dem folgenden angezeigt werden.
Herzliche Glückwünsche. Sie wissen jetzt, wie Sie JSON-Daten abrufen, serialisieren und als normales Wörterbuch in Ihrem Swift-Code verwenden. Wie Sie sehen, ist der Prozess dank der NSJSONSerialisierung
API, die die meiste harte Arbeit für uns erledigt.
Neben dem Lesen von JSON-Daten, die Sie von einer Online-Quelle oder einer lokalen Datei erhalten, ist es auch wichtig zu wissen, wie Sie Ihre eigenen JSON-Daten erstellen. Ob dies als lokale Datei gespeichert oder am häufigsten an einen Web-Service gesendet werden soll, ist der Vorgang genauso einfach und einfach wie das Lesen von JSON-Daten. Schauen Sie sich das folgende Beispiel an.
let validDictionary = ["numericalValue": 1, "stringValue": "JSON", "arrayValue": [0, 1, 2, 3, 4, 5]] let invalidDictionary = ["date": NSDate ()] wenn NSJSONSerialization .isValidJSONObject (validDictionary) // True do lassen Sie rawData = versuchen Sie NSJSONSerialization.dataWithJSONObject (validDictionary, Optionen: .PrettyPrinted) catch // Handle Error, wenn NSJSONSerialization.isValidJSONObject (invalidDictionary) // False // NSJSoinser. dataWithJSONObject (validDictionary, Optionen: .PrettyPrinted) erzeugt einen Fehler, wenn es aufgerufen wird
Wenn Sie Ihre eigenen JSON-Daten aus einem Objekt erstellen, verwenden Sie am besten zuerst die isValidJSONObject (_ :)
Methode, um zu prüfen, ob das Objekt können in ein JSON-Objekt umgewandelt werden.
Nach dieser ersten Prüfung rufen Sie die dataWithJSONObject (_ :)
Methode, die eine NSData
Objekt bei Erfolg. Da wir bereits geprüft haben, ob das Objekt gültig ist, wird der Fehler angezeigt Fang
Das Blockieren hier ist nicht so wichtig wie zuvor, kann aber aufgrund eines internen API-Fehlers beim Erstellen der Rohdaten aufgerufen werden.
Das PrettyPrinted
Die in diesem Beispiel verwendete Option ist die einzige verfügbare Option für diese Methode. Wenn sie verwendet wird, wird einfach mehr Whitespace zu den JSON-Daten hinzugefügt, um das Lesen zu erleichtern.
// Mit PrettyPrinted Option: "Name": "John", "Alter": 25 // Ohne PrettyPrinted Option: "Name": "John", "Alter": 25
Die zurückgekehrt NSData
Objekt kann dann beliebig verwendet werden. Sie können es in einer lokalen Datei speichern oder an einen Webservice senden.
Sie sollten jetzt mit JSON in Swift arbeiten können. Es ist klar, dass der Starspieler der ist NSJSONSerialisierung
Klasse, mit etwas Hilfe von ein paar bewachen
und fangen
Aussagen. Wie Sie sehen, ist die Arbeit mit JSON-Daten sehr einfach. Sobald die JSON-Daten analysiert und serialisiert wurden, können Sie mit ihnen genauso wie mit jedem anderen regulären Objekt interagieren.
Wie immer sollten Sie Ihre Kommentare und Rückmeldungen in den nachstehenden Kommentaren hinterlassen.