Json Iphone 解析数据

Posted

技术标签:

【中文标题】Json Iphone 解析数据【英文标题】:Json Iphone Parse Data 【发布时间】:2013-02-12 16:41:11 【问题描述】:

我已经尝试了几次,但我仍然不知道如何进入 JSON 提要并检索我需要抓取的内容。

Feed 看起来像这样,在我的代码中,我试图提取所有标题。我不知道如何进入 Json Feed。

    - (void)viewDidLoad
    
        [super viewDidLoad];


        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

        NSURL *url = [NSURL URLWithString:@"http://api.storageroomapp.com/accounts/511a4f810f66026b640007b8/collections/511a51580f66023bff000ce9/entries.json?auth_token=Zty6nKsFyqpy7Yp5DP1L&preview_api=1"];

        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        [[NSURLConnection alloc] initWithRequest:request delegate:self];



        // Do any additional setup after loading the view from its nib.
    

    -(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
        data = [[NSMutableData alloc] init];
    
    -(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
        [data appendData:theData];
    
    -(void)connectionDidFinishLoading:(NSURLConnection *) connection
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

        news = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil];
        [mainTableView reloadData];
    

    -(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
        UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"The data could not be downloaded - please make sure you're connected to either 3G or Wi-FI" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [errorView show];
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    


    -(int)numberOfSectionsInTableView:(UITableView *)tableView
        return  1;
    
    -(int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
        return [news count];
    

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];
        if (cell == nil) 
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];


            cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];

        

        return cell;
    

在我的 .H 中,我有 NSArray *news;和 NSMutableData *数据。

任何帮助都会很棒,请你清楚地解释一下你自己,因为我是这门语言的新手。

【问题讨论】:

【参考方案1】:

查看您在代码中的逻辑和您发布的示例 JSON,看起来您的数组并没有填充您想要的内容。

最初,JSON 是字典的形式(因此您提供的图像中的花括号)。因此,您应该将 JSON 的初始解析调整为如下所示:

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil];

从这里,您可以从字典中接收一个键。您要查找的是“数组”,尽管它的名称实际上也是一本字典。

NSDictionary *arrayDictionary = dictionary[@"array"];

继续前进,您终于可以访问您正在寻找的“资源”数组,并且可以将其存储在您在 .h 文件中创建的实例变量中。

news = arrayDictionary[@"resources"];

现在,在cellForRowAtIndexPath 方法中,您可以根据提供给您的索引路径行访问此数组的各种元素。

NSDictionary *newsItem = news[[indexPath row]];

最后,您可以访问各种属性,例如该新闻项目的标题,并设置文本标签的文本。

NSString *title = newsItem[@"title"];
[[cell textLabel] setText:title];

【讨论】:

嗨,如果我上传了 zip,你能快速看一下,发现很难跟上。 好吧,看看你在哪里解析字典,并根据我在帖子中所说的进行调整。最后,我还会向您指出访问标题所需的方法和逻辑。试一试,如果您有任何问题,请回复。 对不起,我不明白最后一点? 您到底遇到了什么问题? bigwavemedia.co.uk/stack.zip 我已经上传了它以使其更容易,因为我觉得很难解释。 xib/m/h 是 ClientGuide 。谢谢一百万:D

以上是关于Json Iphone 解析数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 json 解析的 iPhone 应用程序

JSON解析:来自PHP5(攻击数据库:mySQL)ios5 iphone

解析foursquare为iPhone返回的json给出了无法识别的主角

在 iphone 应用程序上解析 JSON 对象和子元素

使 iPhone 能够获取和解析 JSON?

为 iphone 解析 json 时获取空值?