如何从 NSDictionary 将 json 显示到 uitextview 中


How to display json into uitextview from NSDictionary

我现在整个周末都在尝试将简单的数据从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;

这是电子邮件的应用程序UI文本视图结果:

(null)

因此,正如您所看到的,我在这里的问题是如何从 NSDictionary 中获取值以在应用程序中显示为文本视图,我不想使用表格视图或上面代码以外的内容,所以,请坚持这一点,任何帮助都会很棒谢谢大家。

这是非常基本的,我刚刚得到了我的数据库,想要选择一些代码并将该代码返回到我的应用程序中到 UItextview 任何其他方法都会很棒,每种方式对我来说都只是告诉我如何做到这一点,我在周末疯狂地寻找解决方案,没有什么只是网络上没有 json 和 textview!。

如果日志中的输出是这样的:

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

然后,数据字典包含一个带有键"users"的字典。

在"用户"字典中,您有一个数组。在日志 "(" 等于数组中,对于 json 字符串,"{" 等于字典。

在用户数组中,对象 0 有一个包含多个键的字典(0,1,10,11..Country,电子邮件...)

因此,要将键"电子邮件"的值放在标签中,您可以这样做:

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

您可以迭代数组以对"users"数组中的所有对象执行此操作,或者如果您知道您想要第一个或最后一个,则可以执行NSDictionary *firstUser = [users firstObject]或NSDictionary *firstUser = [users lastObject]。

我希望这有所帮助。