web-dev-qa-db-ja.com

SwiftyJSONオブジェクトを文字列に戻す

SwiftyJSONライブラリを使用して、JSONをSwiftオブジェクトに解析します。JSONオブジェクトを作成し、読み書きできます

// 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)

これらはすべて期待どおりに機能します。 libraryObjectをJSON形式の文字列に戻すだけです!

Println(libraryObject)コマンドは、必要なものをコンソールに出力しますが、文字列として取得する方法が見つかりません。

libraryObject.StringvalueとlibraryObject.Stringは両方とも空の値を返しますが、例えばprintln( "content:" + libraryObject)を試みると、JSONにストリングを追加しようとするとエラーが発生します

32
Derek

SwiftyJSONのREADMEから GitHubで

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

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