如何从 NSDictionary 将 json 显示到 uitextview
Posted
技术标签:
【中文标题】如何从 NSDictionary 将 json 显示到 uitextview【英文标题】:How to display json into uitextview from NSDictionary 【发布时间】:2014-12-29 17:10:04 【问题描述】:我整个周末都在尝试将简单数据从 mysql 数据库返回到 Json 到我的应用程序到一个漂亮的 UItextview 中。
这是我的 php 代码:
<?PHP
include("Connection.php");
$query="Select * from Api";
$result=mysql_query($query,$conn);
while ($row1 = mysql_fetch_array($result))
$users[]=$row1;
$body = array();
if (!empty($users))
$body['users'] = $users;
if (!empty($body))
echo json_encode ($body);
include("dbClose.php");
?>
这是我的 Xcode 代码:
NSURL *url = [NSURL URLWithString:JSON];
NSLog(@"jsonreturn#########=%@",url);
NSError *error = nil;
NSData *jsondata = [NSData dataWithContentsOfURL:url];
NSDictionary *dic = nil;
if (!jsondata)
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error" message:@"Data not found !!." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return;
// NSLog(@"data %@",data);
dic = [NSJSONSerialization JSONObjectWithData:jsondata options:0 error:&error];
[_userEmail removeAllObjects];
[_userFirst removeAllObjects];
NSLog(@"Dictionary data %@",dic);
for (NSDictionary *obj in [dic objectForKey:@"users"])
;
[_userEmail addObject:[obj valueForKey:@"Email"]];
user_mail.text = [NSString stringWithFormat:@"%@", [dic valueForKey: @"Email"]];
这是 Xcode 中的日志,您可以在此处看到 电子邮件,因此您可以看到数据解析良好:
Dictionary data
users = (
0 = 1;
1 = "dani\t";
10 = "";
11 = "";
12 = 0;
2 = "l\f)\U008f\U00d0\U00b7`\U00fcR\U0092\U00bauU\U00f2]";
3 = dani;
4 = dani;
5 = "";
6 = "";
7 = "";
8 = dani;
9 = dani;
Country = "";
Email = "dani\t";
"First_Name" = dani;
这是电子邮件的应用程序 UItextview 结果:
(null)
所以你可以在这里看到我的问题是如何从 NSDictionary 中获取值以作为文本视图显示在应用程序中我不想使用表格视图或不是我上面的代码的东西所以请坚持对此,任何帮助都会非常感谢大家。
这是非常基本的,我刚得到我的数据库,想要选择一些代码并将该代码返回到我的应用程序到 UItextview 任何其他方式都会很棒,每一种方式都适合我,只是告诉我如何做到这一点周末我疯狂地寻找解决方案,但网络上没有 json 和 textview 的解决方案!
【问题讨论】:
嗯,根据你的日志输出,"dic objectForKey:@"users"" 是空的 users 只是 body 查看 php 代码,我使用 json_encode 所以 body 只是 users $body['users'] = $users;它与它无关它应该是空的重要的是电子邮件因此电子邮件是平等的= dani我如何将“dani”放入uitextview?哦,顺便说一句用户不是空的介意理解我......所以你有电子邮件:这是来自数据库“dani”的第一封电子邮件。 如果是这种情况,您可能需要编辑您的日志输出,以便我们可以看到您实际返回的响应。 在那里我编辑了它,你可以看到它非常简单,只是一些你甚至不需要的额外信息......对我的问题有什么帮助吗? 【参考方案1】:如果你的日志输出是这样的:
Dictionary data
users = (
0 = 1;
1 = "dani\t";
10 = "";
11 = "";
12 = 0;
2 = "l\f)\U008f\U00d0\U00b7`\U00fcR\U0092\U00bauU\U00f2]";
3 = dani;
4 = dani;
5 = "";
6 = "";
7 = "";
8 = dani;
9 = dani;
Country = "";
Email = "dani\t";
"First_Name" = dani;
)
然后数据字典包含一个带有“用户”键的字典。
在“用户”字典中,您有一个数组。日志中“(”为数组,“”为字典,为json字符串。
在用户数组中,对象 0 有一个包含多个键的字典 (0,1,10,11..Country,Email...)
所以要将键“Email”的值放入标签中,您可以这样做:
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsondata options:0 error:&error];
NSArray *users = [dic objectForKey:@"users"];
NSDictionary *firstUser = [users objectAtIndex:0];
user_mail.text = [NSString stringWithFormat:@"%@", [firstUser valueForKey: @"Email"]];
您可以迭代数组以对“用户”数组中的所有对象执行此操作,或者如果您知道想要第一个或最后一个,您可以执行 NSDictionary *firstUser = [users firstObject] 或 NSDictionary *firstUser = [用户lastObject]。
希望对你有帮助。
【讨论】:
你太棒了,这么快的回答太棒了!你是我的上帝,谢谢你的队友,非常感谢你,它就像魔术一样工作。所以我缺少的只是一个可以容纳我的用户的数组? nsarray 和 nsmutablearray 有什么区别? 哇...谢谢。哦,别忘了把它标记为已回答,这样它可以帮助其他人;)以上是关于如何从 NSDictionary 将 json 显示到 uitextview的主要内容,如果未能解决你的问题,请参考以下文章
如何在 NSDictionary 中访问本地 JSON 文件响应以在 UITableView 中显示?
如何在序列化为 json 之前将 NSDictionary 添加到另一个 NSDictionary
将 JSON 数据从 NSData 转换为 NSDictionary