json - Swift: Filter a POST http request answer -
on swift, querying server http post request, with:
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() it works , example of returns me:
**** 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, etc......
i'm trying filter json encoded answer, indeed, want few informations, not of them. example, want "container_id", "creation_time" , "last_modified_by" print them on uitableview. how supposed them? on post request, filter on answer ? i've searched while on net , haven't found anything, excerpt use of json parser, https://github.com/owensd/json-swift have 1 problem with.. haven't json datas written on code, it's obtained http post request.. consequence,
if let last_modified_by = json["last_modified_by"].string{     println("last_modified_by = '\(last_modified_by)'") } got error "ambiguous use of 'string'"
hope concise enough, can edit post if need more code or explanations.
regards,
fselva
your json string wrong, there's " shouldn't there before array delimiter:
{"result":true,"data":"[{\"id\":\"b43bd766295                       ^ also, " result , data should escaped, later in string. example: 
{\"result\":true,\"data\":[{\"id\":\"b43bd766295220b23279899d025217d18e98374a\", ...
after that, you're go:
var err: nserror? let json = nsjsonserialization.jsonobjectwithdata(data!, options: nil, error: &err) as? [string:anyobject] // cast `json!["data"]` array of dictionaries if let datadic = json!["data"] as? [[string:anyobject]] {     if let firstid = datadic[0]["id"] as? string {         println(firstid) // "b43bd766295220b23279899d025217d18e98374a"     } } 
Comments
Post a Comment