Schnell mit JSON arbeiten

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.

Voraussetzungen

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.

1. Was ist JSON??

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:

  • String
  • Zahl (Ganzzahl, Float, Double usw.)
  • Boolean
  • Array
  • Wörterbuch

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.

2. Lesen von JSON-Daten

Schritt 1: Spielplatz erstellen

Starten Sie Xcode und erstellen Sie einen neuen Spielplatz. Gib dem Spielplatz einen Namen und setze Plattform zu iOS.

Schritt 2: Fügen Sie JSON-Daten hinzu

Ö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

Schritt 3: Daten abrufen

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.

Schritt 4: Daten analysieren

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.

Schritt 5: Mit Daten arbeiten

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.

3. JSON-Daten schreiben

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.

Fazit

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.