PHP / IOS:什么是最好的方式来编码JSON的Web服务?

我正在尝试创build一个Web服务,通​​过PHP在MySQL应用程序中显示从一个MySQL数据库提供JSON。

我有一个标准的MySQL / PHP设置。

数据在一个带有字段和logging的表格中。 用sql查询来创build一个logging集。 logging集中的每个logging都是一行。

php $sql = "SELECT userid,task,longtask FROM tasks WHERE userid = 1 LIMIT 1"; $res = mysql_query($sql) or die(mysql_error()); $tasks = array(); while($row = mysql_fetch_assoc($res)) { $tasks[] = array('row'=>$row); } echo json_encode(array('tasks'=>$tasks)); // 

Web服务产生以下输出:

 {"tasks":[{"row":{"userid":"1","task":"send email to Bob","longtask":"include attached memo"}}]} 

然而,我很难把它读入IOS,提示可能有更好的Web服务格式。

这个结构不同于我在阅读json到IOS(其中没有使用php / mysql)的教程和其他资源中的结构。

任何人都可以告诉我一个更好的方法来构造JSON,或者在iOS中读取这个JSON来获取用户标识,任务和其他variables。

当我尝试这个,我得到一个错误,它不能放在行索引:0

  NSError* error; NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1 options:kNilOptions error:&error]; NSLog(@"about to print json: %@",json); NSMutableArray *getElement = [json objectForKey:@"tasks"]; for (NSDictionary *dict in getElement) { NSArray *array = [dict objectForKey:@"row"]; NSString *str = [array objectAtIndex:0]; } 

在此先感谢您的任何build议。

方法1:编辑PHP代码

索引0不可用,因为您正在使用mysql_fetch_assoc从PHP中获取关联数组。

使用mysql_fetch_array将默认返回一个包含从零开始的索引和关联关键字的数组。

 $sql = "SELECT userid,task,longtask FROM tasks WHERE userid = 1 LIMIT 1"; $res = mysql_query($sql) or die(mysql_error()); $tasks = array(); while($row = mysql_fetch_array($res)) { $tasks[] = array('row'=>$row); } echo json_encode(array('tasks'=>$tasks)); 

会输出

 {"tasks":[{"row":{"0":"1","userid":"1","1":"send email to Bob","task":"send email to Bob","2":"include attached memo","longtask":"include attached memo"}}]} 

现在,您可以使用键0userid任何一个来检索用户userid

方法2:编辑iOS代码

编辑iOS代码。 但为了这个工作,你将不得不知道行中的钥匙。

 NSString *str = [array objectForKey:@"userid"];`