La chaîne à convertir:
[{"description": "Hi","id":2,"img":"hi.png"},{"description": "pet","id":10,"img":"pet.png"},{"description": "Hello! :D","id":12,"img":"hello.png"}]
Le code pour convertir la chaîne:
var json = JSON(stringLiteral: stringJSON)
La chaîne est convertie en JSON et lorsque j'essaie de compter le nombre de blocs contenus dans ce JSON (réponse attendue = 3), j'obtiens 0.
print(json.count)
Sortie de la console: 0
Qu'est-ce que je rate? L'aide est très appréciée.
Salut les gars, je le répare de cette façon ...
note: je vais utiliser la variable "chaîne" comme la variable qui contient le JSON
1º
encoder la piqûre avec NSData comme ceci
var encodedString : NSData = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding)!
2º désencodez la chaîne encodée (cela peut sembler un peu bizarre, hehehe)
var finalJSON = JSON(data: encodedString)
et vous pouvez faire ce que vous voulez avec ce JSON! :RÉ
comme obtenir le nombre de sections dedans (c'était la vraie question) avec
finalJSON.count
ou print(finalJSON[0])
ou ce que vous aimez faire ..
alors, j'espère que vous apprécierez la façon dont j'ai trouvé!
continue à coder, Gabriel Cuadros: D
En fait, il y avait une fonction intégrée dans SwifyJSON appelée parse
/**
Create a JSON from JSON string
- parameter string: Normal json string like '{"a":"b"}'
- returns: The created JSON
*/
public static func parse(string:String) -> JSON {
return string.dataUsingEncoding(NSUTF8StringEncoding)
.flatMap({JSON(data: $0)}) ?? JSON(NSNull())
}
Notez que
var json = JSON.parse(stringJSON)
sa maintenant changé en
var json = JSON.init(parseString:stringJSON)
J'utilise comme suit:
let yourString = NSMutableString()
let dataToConvert = yourString.data(using: String.Encoding.utf8.rawValue)
let json = JSON(data: dataToConvert!)
print("\nYour string: " + String(describing: json))
Swift4
let json = string.data(using: String.Encoding.utf8).flatMap({try? JSON(data: $0)}) ?? JSON(NSNull())