web-dev-qa-db-fra.com

Objet SwiftyJSON de retour à la chaîne

J'utilise la bibliothèque SwiftyJSON pour analyser JSON en Swift. Je peux créer l'objet JSON et le lire et y écrire

// Create json object to represent library
var libraryObject = JSON(["name":"mylibrary","tasks":["Task1","Task2","Task3"]])


    // Get
    println(libraryObject["name"])
    println(libraryObject["tasks"][0])

    // Set
    println("Setting first task to 'New Task'")
    libraryObject["tasks"][0] = "New Task"

    // Get
    println(libraryObject["tasks"][0])

    // Convert object to JSON and print
    println(libraryObject)

Tout cela fonctionne comme prévu. Je veux juste reconvertir le libraryObject en une chaîne au format JSON!

La commande println (libraryObject) renvoie ce que je veux à la console mais je ne trouve pas de moyen de l'obtenir sous forme de chaîne.

libraryObject.Stringvalue et libraryObject.String renvoient tous les deux des valeurs vides, mais lorsque j'essaie, par exemple, println ("content:" + libraryObject) j'obtiens une erreur en essayant d'ajouter une chaîne à un JSON

32
Derek

Depuis le README de SwiftyJSON sur GitHub :

//convert the JSON to a raw String
if let string = libraryObject.rawString() {
//Do something you want
  print(string)
}
72
Raja Vikram

Version Swift 4.2

//convert the JSON to a raw String
if let strJson = jsonObject.rawString() {
    // 'strJson' contains string version of 'jsonObject'
}

//convert the String back to JSON (used this way when used with Alamofire to prevent errors like Task .<1> HTTP load failed (error code: -1009 [1:50])
if let data = strJson.data(using: .utf8) {
    if let jsonObject = try? JSON(data: data) {
        // 'jsonObject' contains Json version of 'strJson'
    }
}
5
Mehdico