在Swift中将数组转换为JSON字符串

78

在Swift中如何将数组转换为JSON字符串? 基本上,我有一个带有内嵌按钮的文本框。 当按下按钮时,文本框文本被添加到testArray中。 此外,我想将此数组转换为JSON字符串。

这是我尝试过的:

func addButtonPressed() {
    if goalsTextField.text == "" {
        // Do nothing
    } else {
        testArray.append(goalsTextField.text)
        goalsTableView.reloadData()
        saveDatatoDictionary()
    }
}

func saveDatatoDictionary() {
    data = NSKeyedArchiver.archivedDataWithRootObject(testArray)
    newData = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions(), error: nil) as? NSData
    string = NSString(data: newData!, encoding: NSUTF8StringEncoding) 
    println(string)
}

我还想使用我的savetoDictionart()方法返回JSON字符串。

12个回答

1
对于Swift 3.0,您必须使用以下内容:
var postString = ""
    do {
        let data =  try JSONSerialization.data(withJSONObject: self.arrayNParcel, options: .prettyPrinted)
        let string1:String = NSString(data: data, encoding: String.Encoding.utf8.rawValue) as! String

        postString = "arrayData=\(string1)&user_id=\(userId)&markupSrcReport=\(markup)"
    } catch {
        print(error.localizedDescription)
    }
    request.httpBody = postString.data(using: .utf8)

100%工作测试通过


它确实可以工作,但是为什么要注释String,而初始化NSString并强制转换为String呢? let string1 = String(data: data, encoding: .utf8)!就足够了。在Swift中根本不要使用NSString - vadian
需要单独转换数组,这就是为什么啊。 - Mr.Javed Multani
相信我,没有必要使用 NSString。始终使用本地的 Swift String。这种转换是毫无疑问的。 - vadian

0
你可以试试这个。
func convertToJSONString(value: AnyObject) -> String? {
        if JSONSerialization.isValidJSONObject(value) {
            do{
                let data = try JSONSerialization.data(withJSONObject: value, options: [])
                if let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue) {
                    return string as String
                }
            }catch{
            }
        }
        return nil
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接