web-dev-qa-db-fra.com

Comment convertir une chaîne en JSON avec SwiftyJSON

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.

18

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

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

14

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)
31
HamGuy

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))
2
Machado

Swift4

let json = string.data(using: String.Encoding.utf8).flatMap({try? JSON(data: $0)}) ?? JSON(NSNull())
0
Maxim Firsoff