gpt4 book ai didi

PHP/IOS : what is best way to encode json for web service?

转载 作者:可可西里 更新时间:2023-11-01 06:05:45 26 4
gpt4 key购买 nike

我正在尝试创建一个 Web 服务,该服务通过 php 从 mysql 数据库提供 json,以便在 iPhone 应用程序中显示。

我有一个标准的 mysql/php 设置。

数据在一个包含字段和记录的表中。用sql查询创建一个记录集。记录集中的每条记录都是一行。

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 以获取用户 ID、任务和其他变量。

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

      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];
}

提前感谢您的任何建议。

最佳答案

方法一:编辑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 检索用户 ID。

方法二:修改iOS代码

编辑 iOS 代码。但要使其发挥作用,您必须知道行中的键。

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

关于PHP/IOS : what is best way to encode json for web service?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31234531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com