在 swift 中加载 JSON 结果

Load JSON result in swift

我正在尝试将从 Playframewordk 1.2 获得的 JSON 结果解析为 swift。

Playframework 结果:

    public JsonObject getJson() {
    JsonObject jsonObject = new JsonObject();
    if (codeJson != null) {
        for (String field : codeArticleFields) {
            if (codeJson.has(field)) {
                jsonObject.add(field, codeJson.get(field));
            }
        }
    }
    return jsonObject;
}

查看游戏框架

#{extends 'main.html' /}
#{set title:'Test' /}
#{set 'moreScripts' }
#{/set}
${product?.getJson()}

这里是swift的代码:

    func connectProductDatabase() {
    let urlString = "http://api.autoidlabs.ch/test/" + "4025089060857"
    let url: NSURL = NSURL(string: urlString)!
    var request : NSMutableURLRequest = NSMutableURLRequest()
    request.URL = url
    request.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler: {
        (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        var error: NSError?
        if let result = NSJSONSerialization.JSONObjectWithData(data, options:  nil, error: &error)
            as? NSArray {
                let dataArray = result[0] as NSArray
                println(dataArray)

        } else {
            let resultString = NSString(data: data, encoding: NSUTF8StringEncoding)
            println("Flawed JSON String: \(resultString)")
        }
    })
    println("not connected")

}

因此,我得到了包含所有 HTML 标记的整个文件。这是因为它没有进入 if 语句。 (我也试过 options:NSJSONReadingOptions.MutableContainers)

我尝试了很多从 Whosebug 中找到的结果,但遇到了同样的问题。如果我理解得很好,playframework 视图并没有真正返回 JSON,java 的 JsonObject 是一个格式化为 JSON.

的字符串

我该如何解决这个问题?

我能够解决问题。 我使用 NSDictionary

而不是 NSArray
            if let result = NSJSONSerialization.JSONObjectWithData(data, options:  NSJSONReadingOptions.MutableContainers, error: &error)
            as? NSDictionary {

然后在 playframework 中我使用了 renderJSON 而不是 render。