这是我的代码:
let myUrl = NSURL(string:"hostname/file.php");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "GET";
NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
dispatch_async(dispatch_get_main_queue())
{
if(error != nil)
{
//Display an alert message
return
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
if let parseJSON = json { /* when the app reach here , will enter the catch and get out */
let userId = parseJSON["id"] as? String
print(userId)
if(userId != nil)
{
NSUserDefaults.standardUserDefaults().setObject(parseJSON["id"], forKey: "id")
NSUserDefaults.standardUserDefaults().setObject(parseJSON["name"], forKey: "name")
NSUserDefaults.standardUserDefaults().synchronize()
} else {
// display an alert message
print("error")
}
}
} catch
{
print(error)
}
}
}).resume()
我的应用程序从php文件获取JSON,将数组从数据库解析为JSON并使用echo
返回它并返回以下2行:
[{"id":"1","name":"CIT","adminstrator_id":"1"},{"id":"2","name":"HelpDesk","adminstrator_id":"1"}]
当我打印json
的说明时,我会nil
我尝试将json
转换为NSArray
,当我先打印json[0]
时,我得到的第一行是好的,但当我尝试投射json[0]
的结果时对于NSDictionary,我仍然没有从中获取
当应用程序到达if语句if let parseJSON = json
时,它将进入捕获并且它不会打印任何错误,我不知道为什么?
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM department";
$result = $conn->query($sql);
$rows = array();
if ($result->num_rows > 0) {
// output data of each row
while($r = $result->fetch_assoc()) {
$rows[] = $r;
}
$conn->close();
echo json_encode($rows);
} else {
$conn->close();
echo "0 results";
}
?>
我的请求或处理请求的问题是什么?
答案 0 :(得分:2)
JSON是struct container {
void *data;
int count;
};
void tree_walk_recurse(const t_node *node, void (*func)(void *, void *), void *data)
{
if (node->left) tree_walk_recurse(node->left, func, data);
func(node->data, data);
if (node->right) tree_walk_recurse(node->right, func, data);
}
void tree_walk(const t_node *root, void (*func)(void *, void), void *data)
{
if (root && func) tree_walk_recurse(root, func, data);
}
void insert(void *data, void *ptr)
{
struct data *array = ptr;
array->data[array->count++] = data;
}
/* Traverse in-order using insert */
struct container array;
array.data = malloc(sizeof(struct data) * n);
array.count = 0;
tree_walk(root, insert, &array);
词典的数组。
在JSON字符串中[String:String]
表示数组,[]
表示字典。
不需要URLRequest,因为{}
是默认模式。不需要GET
因为只读取了值。
考虑JSON返回多条记录。此代码只打印.MutableContainers
和id
的所有值。
name