Swift使用String创建JSON对象

Jak*_*art 2 json ios swift

我正在尝试使用我从数据库获取的字符串作为使用swift的JSON.我试图将字符串转换为数据对象然后使用JSONSerialization,但结果总是回来零.

以下是我的代码示例:

var string = "{Param1: \"Value\", Param2: \"value2\", Param3: \"value3\"}"
let data = (reducedOptionsString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
if let d = data{
    var err : NSErrorPointer = nil
    let parsedObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(d, options: NSJSONReadingOptions.MutableLeaves, error: err)
    if let dict = parsedObject as? Dictionary<String, AnyObject>{
          ...
    }
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,parsedObject总是以nil的形式返回

有谁知道我可能缺少什么来将我的字符串数据转换为我可以使用的JSON对象?

Cla*_*edi 5

你的json无效,键也必须用引号括起来.

"{ \"Param1\": \"Value\", \"Param2\": \"value2\", \"Param3\": \"value3\"}"
Run Code Online (Sandbox Code Playgroud)

另外,正如@zaph指出的那样,它是string你要转换为数据的变量.

var string = "{\"Param1\": \"Value\", \"Param2\": \"value2\", \"Param3\": \"value3\"}"
if let data = string.dataUsingEncoding(NSUTF8StringEncoding){
    var err : NSErrorPointer = nil
    let parsedObject = NSJSONSerialization.JSONObjectWithData(
        data!,
        options: NSJSONReadingOptions.MutableLeaves, 
        error: err) as? Dictionary<String, AnyObject>

    if (parsedObject != nil) {
        ...
    }
    else {
        if (err != nil) {
            println("Error: \(err)")
        }
        else {
            println("Error: unexpected error parsing json string")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用SwiftyJSON,一个非常受欢迎的库来处理swift上的json,这可以让您的生活更轻松一些.