Con Swift 3 e Swift 4, String
ha un metodo chiamato data(using:allowLossyConversion:)
. data(using:allowLossyConversion:)
ha la seguente dichiarazione:
func data(using encoding: String.Encoding, allowLossyConversion: Bool = default) -> Data?
Restituisce un dato contenente una rappresentazione della stringa codificata utilizzando una determinata codifica.
Con Swift 4, String
's data(using:allowLossyConversion:)
può essere usato insieme a JSONDecoder
' s decode(_:from:)
per deserializzare una stringa JSON in un dizionario.
Inoltre, con Swift 3 e Swift 4, String
è data(using:allowLossyConversion:)
anche possibile utilizzare JSONSerialization
"s" insieme a " jsonObject(with:options:)
per deserializzare una stringa JSON in un dizionario.
# 1. Soluzione Swift 4
Con Swift 4, JSONDecoder
ha un metodo chiamato decode(_:from:)
. decode(_:from:)
ha la seguente dichiarazione:
func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
Decodifica un valore di livello superiore del tipo specificato dalla rappresentazione JSON fornita.
Il codice Playground di seguito mostra come utilizzare data(using:allowLossyConversion:)
e decode(_:from:)
per ottenere un Dictionary
da un formato 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. Soluzione Swift 3 e Swift 4
Con Swift 3 e Swift 4, JSONSerialization
ha un metodo chiamato jsonObject(with:options:)
. jsonObject(with:options:)
ha la seguente dichiarazione:
class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any
Restituisce un oggetto Foundation da determinati dati JSON.
Il codice Playground di seguito mostra come utilizzare data(using:allowLossyConversion:)
e jsonObject(with:options:)
per ottenere un Dictionary
da un formato 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)
}
}