如何快速将数组转换为 JSON 字符串?基本上,我有一个文本框,其中嵌入了一个按钮。按下按钮后,文本字段文本将添加到中testArray。此外,我想将此数组转换为 JSON 字符串。
testArray
这是我尝试过的:
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()。
savetoDictionart()
就目前而言,您正在将其转换为数据,然后尝试将数据转换为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)
尽管您可能不应该使用强制展开,但是它为您提供了正确的起点。