Swift:过滤POST http请求答案

时间:2015-06-01 09:28:34

标签: json uitableview swift http post

在swift上,我通过HTTP Post请求查询服务器:

let myUrl = NSURL(string: "http://****.*****.***.***/****.php"); 
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST"
let session = NSURLSession.sharedSession()

var getDefaults = NSUserDefaults.standardUserDefaults();
var password = getDefaults.valueForKey("password") as! String;
var id = getDefaults.valueForKey("login") as! String;

var err: NSError?

let postString = "Method=Tasks.getTasksByFolder" + "&Identifiant=" + id + "&Password=" + password + "&data={\"folder\":\"" + folder + "\"}" // filter = {"folder":"INBOX"}

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
    data,response,error in

    if error != nil{
        println("error=\(error)")
        return
    }

println("**** response = \(response)")


let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("**** response data = \(responseString)")


var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &err) as? NSDictionary


}
task.resume()

它有效,这是它返回给我的一个例子:

**** response data = Optional({"result":true,"data":"[{\"id\":\"b43bd766295220b23279899d025217d18e98374a\",\"container_id\":\"6658\",\"created_by\":\"76bbfe695318d471a541bc3333e58eea28acae54\",\"creation_time\":\"2015-05-26 15:20:32\",\"last_modified_by\":null,\"last_modified_time\":null,\"is_deleted\":\"0\",\"deleted_by\":null,\"deleted_time\":null,\"percent\":\"0\",\"completed\":null,\"due\":null,

等......

我试图过滤这个JSON编码的答案,实际上,我只想要一些信息,而不是所有信息。例如,我只想让"container_id""creation_time""last_modified_by"UITableView上打印出来。我怎么能得到它们?它是在POST请求上,它是答案的过滤器吗?我已经在网上搜索了一段时间,我找不到任何内容,摘录了JSON parser的使用,例如https://github.com/owensd/json-swift,但我有一个问题...我没有&#39 ;写在我的代码上的JSON数据,它是由HTTP Post Request获得的。 结果,

if let last_modified_by = json["last_modified_by"].string{
    println("last_modified_by = '\(last_modified_by)'")
}

收到错误"Ambiguous use of 'string'"

希望我足够简洁,如果您需要更多代码或解释,我可以编辑我的帖子。

此致

fselva

1 个答案:

答案 0 :(得分:1)

您的JSON字符串错误,在数组分隔符之前不应存在"

{"result":true,"data":"[{\"id\":\"b43bd766295
                      ^

此外,"result的{​​{1}}应该被转义,因为它们稍后会出现在字符串中。示例:

data

在那之后,你很高兴:

{\"result\":true,\"data\":[{\"id\":\"b43bd766295220b23279899d025217d18e98374a\", ...