J'ai des données json qui ont une chaîne json (valeur) qui ressemble à ceci
{
"Label" : "NY Home1",
"Value" : "{\"state\":\"NY\",\"city\":\"NY\",\"postalCode\":\"22002\",\"value\":\"Fifth Avenue1\nNY NY 22002\nUSA\",\"iosIdentifier\":\"71395A78-604F-47BE-BC3C-7F932263D397\",\"street\":\"Fifth Avenue1\",\"country\":\"USA\"}",
}
Je prends le jsonString en utilisant swiftyjson
let value = sub["Value"].string ?? ""
Après cela, je convertis ce jsonString en dictionnaire avec ce code ci-dessous, mais il affiche toujours ce message d'erreur The data couldn’t be read because it isn’t in the correct format
if let data = value.data(using: String.Encoding.utf8) {
do {
let a = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
print("check \(a)")
} catch {
print("ERROR \(error.localizedDescription)")
}
}
Je pense que cela se produit parce que "\ n", comment convertir jsonstring en dictionnaire qui a "\ n"?
Vous avez raison, un problème est survenu à cause de "\ n". J'ai essayé votre code sans "\ n" et il fonctionne parfaitement.
J'ai remplacé "\ n" par "\\ n" et iOS semble convertir la chaîne en dictionnaire:
let value = "{\"state\":\"NY\",\"city\":\"NY\",\"postalCode\":\"22002\",\"value\":\"Fifth Avenue1\nNY NY 22002\nUSA\",\"iosIdentifier\":\"71395A78-604F-47BE-BC3C-7F932263D397\",\"street\":\"Fifth Avenue1\",\"country\":\"USA\"}"
if let data = value.replacingOccurrences(of: "\n", with: "\\n").data(using: String.Encoding.utf8) {
do {
let a = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String: Any]
NSLog("check \(a)")
} catch {
NSLog("ERROR \(error.localizedDescription)")
}
}
J'ai obtenu ceci dans mon journal:
check Optional(["value": Fifth Avenue1
NY NY 22002
USA, "country": USA, "city": NY, "iosIdentifier": 71395A78-604F-47BE-BC3C-7F932263D397, "street": Fifth Avenue1, "postalCode": 22002, "state": NY])