Jestem nowicjuszem w Swift, więc uprzejmie przepraszam, jeślito pytanie brzmi zbyt głupio. Próbuję utworzyć obiekt JSON z wyjścia Array słownik, który musi mieć nawiasów klamrowych ("{}") po każdym obiekcie zamiast nawiasów kwadratowych ("[]"). Mój kod podano poniżej.
import UIKit
var locations = Array<Dictionary<String, String>>()
var myLocations = ["pqr","xyz"]
myLocations.forEach {_ in
var dictionary = Dictionary<String, String>()
dictionary["string1"] = "hello"
dictionary["string2"] = "world"
locations.append(dictionary)
}
print(locations)
Dane wyjściowe do tego są: - [["string2": "świat", "ciąg1": "cześć"], ["ciąg2": "świat", "ciąg1": "cześć"]] n
Jednak wymagam tego jako: - [{"string2": "world", "string1": "hello"}, {"string2": "world", "string1": "hello"}] n
Wiem, że jednym ze sposobów na to jest użycie filtraTablice, ale podejrzewam, że może być łatwiejszy sposób na to, czego nie jestem w stanie znaleźć po przejrzeniu różnych dokumentacji na temat Swift. Czy możesz mi pomóc z tym. Z góry dziękuję.
Odpowiedzi:
2 dla odpowiedzi № 1Wyjście to
[["string2": "world", "string1": "hello"], ["string2": "world", "string1": "hello"]]
ponieważ jest to tablica Swift ze słownikami Swift.
Aby przekonwertować ten obiekt na JSON, nie parsuj i nie zastępuj znaków samodzielnie, zamiast tego użyj NSJSONSerialization:
do {
let jsonData = try NSJSONSerialization.dataWithJSONObject(locations, options: [])
if let jsonString = String(data: jsonData, encoding: NSUTF8StringEncoding) {
print(jsonString)
}
} catch {
print(error)
}
Wydruki:
[{"string2": "world", "string1": "hello"}, {"string2": "world", "string1": "hello"}]
Używamy dataWithJSONObject
do zamiany twojego obiektu Swift na JSON dane, a następnie używamy String(data:, encoding:)
do konwersji tych danych JSON do JSON strunowy.