Avec Swift 3 et Swift 4, Stringa une méthode appelée data(using:allowLossyConversion:). data(using:allowLossyConversion:)a la déclaration suivante:
func data(using encoding: String.Encoding, allowLossyConversion: Bool = default) -> Data?
Renvoie un Data contenant une représentation de la chaîne encodée à l'aide d'un encodage donné.
Avec Swift 4, String's data(using:allowLossyConversion:)peut être utilisé avec JSONDecoder' sdecode(_:from:) afin de désérialiser une chaîne JSON dans un dictionnaire.
De plus, avec Swift 3 et Swift 4, String's data(using:allowLossyConversion:)peut également être utilisé en conjonction avec JSONSerialization' s jsonObject(with:options:)afin de désérialiser une chaîne JSON dans un dictionnaire.
#1. Solution Swift 4
Avec Swift 4, JSONDecodera une méthode appelée decode(_:from:). decode(_:from:)a la déclaration suivante:
func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
Décode une valeur de niveau supérieur du type donné à partir de la représentation JSON donnée.
Le code Playground ci-dessous montre comment utiliser data(using:allowLossyConversion:)et decode(_:from:)pour obtenir un à Dictionarypartir d'un format JSON 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. Solution Swift 3 et Swift 4
Avec Swift 3 et Swift 4, JSONSerializationa une méthode appelée jsonObject(with:options:). jsonObject(with:options:)a la déclaration suivante:
class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any
Renvoie un objet Foundation à partir de données JSON données.
Le code Playground ci-dessous montre comment utiliser data(using:allowLossyConversion:)et jsonObject(with:options:)pour obtenir un à Dictionarypartir d'un format JSON 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)
}
}