一尘不染

快速将数组转换为JSON字符串

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

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


阅读 421

收藏
2020-07-07

共1个答案

一尘不染

就目前而言,您正在将其转换为数据,然后尝试将数据转换为JSON形式的对象(失​​败,不是JSON)并将其转换为字符串,基本上,您进行了一堆毫无意义的转换。

只要数组仅包含JSON可编码的值(字符串,数字,字典,数组,nil),就可以使用NSJSONSerialization来实现。

相反,只需执行array-> data-> string部分:

迅捷3/4

let array = [ "one", "two" ]

func json(from object:Any) -> String? {
    guard let data = try? JSONSerialization.data(withJSONObject: object, options: []) else {
        return nil
    }
    return String(data: data, encoding: String.Encoding.utf8)
}

print("\(json(from:array as Any))")

原始答案

let array = [ "one", "two" ]
let data = NSJSONSerialization.dataWithJSONObject(array, options: nil, error: nil)
let string = NSString(data: data!, encoding: NSUTF8StringEncoding)

尽管您可能不应该使用强制展开,但是它为您提供了正确的起点。

2020-07-07