我需要用swift解析这个JSON响应和http请求

我需要用swift解析这个JSON响应和http请求,json,swift,post,http-post,Json,Swift,Post,Http Post,这是我用php编写的脚本,它有一个Json响应 <?php include "dbconnect.php"; $id = $_POST['id']; $uname = $_POST['uname']; try { $queryExistingBike = "SELECT StatoBici, Username FROM BICI INNER JOIN UTENTE ON utenteKEY = KEYutente WHERE (IdBike = '$id')"; $search =

这是我用php编写的脚本,它有一个Json响应

<?php
include "dbconnect.php";

$id = $_POST['id'];
$uname = $_POST['uname'];

try {
 $queryExistingBike = "SELECT StatoBici, Username FROM BICI INNER JOIN UTENTE ON utenteKEY = KEYutente WHERE (IdBike = '$id')";
 $search = $connection->query($queryExistingBike);

    //print_r ($search);
} catch (Exception $ex) {
    echo $ex->getMessage();
}

$dati = $search->fetch_assoc();

if ($dati["Username"] == "$uname") {
  $dati['Username'] = "true";
} else {
  $dati['Username'] = "false";
}
//print_r($dati);
print json_encode($dati);
 ?>
这是swift中向web服务发出http post请求的代码

    func jsonResponse(){
        var request = URLRequest(url: URL(string: "http://bike1010.com/webservice/getBikeData.php")!)

        request.httpMethod = "POST"
        let postString = "id=2017&uname=admin"  // Your parameter
        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            guard let data = data, error == nil else {                                                 // check for fundamental networking error
                print("error=\(String(describing: error))")
                return
            }

            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                print("statusCode should be 200, but is \(httpStatus.statusCode)")
                print("response = \(String(describing: response))")

            }

            let responseString = try? JSONSerialization.jsonObject(with: data, options:[])
            print(responseString)


        }

        task.resume()
    }
将输出转换为Xcode

Optional({
    StatoBici : Ok
    Username : Tue
})

如果这是您想要实现的目标:

let responseString = try? JSONSerialization.jsonObject(with: data, options:[]) as? [String:Any]
print(responseString)
//simple example for receiving each field from response
let statoBici:String = responseString["StatoBici"] as! String
let username:Bool = responseString["Username"] as! Bool
print("StatoBici received: \(statoBici), username received: \(username)")

正如Wojcik在评论中提到的,您已经有了解析JSON。您的
responseString
实际上是已解析的对象。您可以通过以下方式访问值:

if let obj = responseString as? NSDictionary {
   let StatoBici = obj.value(for : "StatoBici") as! String
   let okValue   = obj.value(for : "OK") as! String // If OK is bool use bool
}

那么问题是什么呢?您已经解析了JSON并打印了结果。你想要实现什么?您想将其解析为一个对象,以便使用每个结果值作为键吗?
if let obj = responseString as? NSDictionary {
   let StatoBici = obj.value(for : "StatoBici") as! String
   let okValue   = obj.value(for : "OK") as! String // If OK is bool use bool
}