Mit Swift 3 und Swift 4 String
wird eine Methode aufgerufen data(using:allowLossyConversion:)
. data(using:allowLossyConversion:)
hat die folgende Erklärung:
func data(using encoding: String.Encoding, allowLossyConversion: Bool = default) -> Data?
Gibt Daten zurück, die eine Darstellung des mit einer bestimmten Codierung codierten Strings enthalten.
Mit Swift 4 kann String
's data(using:allowLossyConversion:)
in Verbindung mit JSONDecoder
' s verwendet decode(_:from:)
werden, um eine JSON-Zeichenfolge in ein Wörterbuch zu deserialisieren.
Darüber hinaus können mit Swift 3 und Swift 4 String
's data(using:allowLossyConversion:)
auch in Verbindung mit JSONSerialization
' s verwendet jsonObject(with:options:)
werden, um eine JSON-Zeichenfolge in ein Wörterbuch zu deserialisieren.
# 1. Swift 4-Lösung
Mit Swift 4 JSONDecoder
wird eine Methode aufgerufen decode(_:from:)
. decode(_:from:)
hat die folgende Erklärung:
func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
Dekodiert einen Wert der obersten Ebene des angegebenen Typs aus der angegebenen JSON-Darstellung.
Der folgende Spielplatzcode zeigt, wie data(using:allowLossyConversion:)
und decode(_:from:)
um einen Dictionary
von einem JSON formatierten zu erhalten String
:
let jsonString = """
{"password" : "1234", "user" : "andreas"}
"""
if let data = jsonString.data(using: String.Encoding.utf8) {
do {
let decoder = JSONDecoder()
let jsonDictionary = try decoder.decode(Dictionary<String, String>.self, from: data)
print(jsonDictionary) // prints: ["user": "andreas", "password": "1234"]
} catch {
// Handle error
print(error)
}
}
# 2. Swift 3 und Swift 4 Lösung
Mit Swift 3 und Swift 4 JSONSerialization
wird eine Methode aufgerufen jsonObject(with:options:)
. jsonObject(with:options:)
hat die folgende Erklärung:
class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any
Gibt ein Foundation-Objekt aus angegebenen JSON-Daten zurück.
Der folgende Spielplatzcode zeigt, wie data(using:allowLossyConversion:)
und jsonObject(with:options:)
um einen Dictionary
von einem JSON formatierten zu erhalten String
:
import Foundation
let jsonString = "{\"password\" : \"1234\", \"user\" : \"andreas\"}"
if let data = jsonString.data(using: String.Encoding.utf8) {
do {
let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: []) as? [String : String]
print(String(describing: jsonDictionary)) // prints: Optional(["user": "andreas", "password": "1234"])
} catch {
// Handle error
print(error)
}
}