从Array创建JSON字符串?

时间:2014-12-21 23:59:41

标签: swift

这可能是一个简单的问题,但是如何从现有数组创建一个简单的JSON字符串?

在文档中,我发现的唯一内容是:

class func JSONObjectWithData(_ data: NSData,
                  options opt: NSJSONReadingOptions,
                    error error: NSErrorPointer) -> AnyObject?

但我只想从现有的数组创建一个简单的JSON字符串。

使用现有的Swift JSON Extensions,我只能解析现有的JSON字符串,并且无法创建新的字符串。

我可以手动创建String,但可能有更好的解决方案。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

如果你有一个NSArray对象,你可以使用类似的东西来创建你的JSON字符串:

func JSONStringify(value: AnyObject, prettyPrinted: Bool = false) -> String {
    var options = prettyPrinted ? NSJSONWritingOptions.PrettyPrinted : nil
    if NSJSONSerialization.isValidJSONObject(value) {
        if let data = NSJSONSerialization.dataWithJSONObject(value, options: options, error: nil) {
            if let string = NSString(data: data, encoding: NSUTF8StringEncoding) {
                return string
            }
        }
    }
    return ""
}

I found here the details for this function

SWIFT 3

 func JSON2String(jsonObj: AnyObject, prettyPrinted: Bool = false) -> String {
    let options = prettyPrinted ? JSONSerialization.WritingOptions.prettyPrinted : []
    if JSONSerialization.isValidJSONObject(jsonObj) {
        if let data = try? JSONSerialization.data(withJSONObject: jsonObj, options: options) {
            if let string = String(data: data, encoding: Task.StringEncoding) {
                return string
            }
        }
    }
    return ""
}

答案 1 :(得分:1)

我们假设您有String个名为array的数组。你会这样做:

let array = [ "String1", "String2" ]
var error:NSError?

let data = NSJSONSerialization.dataWithJSONObject(array, options: NSJSONWritingOptions.allZeros, error: &error)
let str = NSString(data:data!, encoding:NSUTF8StringEncoding)

println("\(str!)")