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"}}]}
现在,您可以使用键0
或userid
任何一个来检索用户userid
。
方法2:编辑iOS代码
编辑iOS代码。 但为了这个工作,你将不得不知道行中的钥匙。
NSString *str = [array objectForKey:@"userid"];`
- 在iOS模拟器中查看源代码?
- 点击目标c中的一个button后,如何推送标签栏控制器?
- 如何从文本字段发送文本到另一个视图控制器
- iOS:运营(NSOperations)-为什么又来了?
- parsingBaaS Swift中的iOS LoginField – .value应该改成?
- 当用户平移地图时,iOS 6中的地图注释不会保持旋转状态
- Uber API端点不能与真正的服务器域一起工作,但可以很好地与沙箱配合使用
- 立即调用MPMoviePlayerPlaybackDidFinishNotification
- dynamic模拟iOSdynamictypes系统文本大小(UIContentSizeCategory)