从子类别中检索特定的 JSON 键

Retrieve specific JSON key from subcategory

我在我的 TableView 上仅从服务器检索数据一次 JSON,并且工作正常。我无法打印 JSON 中的特定主题。

例如,根据我的 JSON,我只想打印 Dining RoomCoffees 的名称,而不打印 Bedroom。我该怎么做?

我只能用我的代码打印子类别>产品(名称)的全名。

代码:

-(void)getJSON{

NSString *string = BaseURLString;
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    _dic  = (NSDictionary *)responseObject;

    for (NSDictionary *dict in [_dic objectForKey:@"categories"]) {

        if ([[dict valueForKey:@"sub_category"]  isKindOfClass:[NSArray class]])
        {
            [_arraySubCategory addObject:[[[dict valueForKey:@"sub_category"] valueForKey:@"products"] valueForKey:@"name"]];

        }

    }

我的JSON数据:

Array
(
[categories] => Array
    (
        [0] => Array
            (
                [category_id] => 100
                [name] => Shop By Room
                [sub_category] => Array
                    (
                        [0] => Array
                            (
                                [category_id] => 72
                                [name] => BEDROOM
                                [sub_category] => 0
                                [product_total] => 11
                                [products] => Array
                                    (
                                        [0] => Array
                                            (
                                                [product_id] => 138
                                                [name] => Jewellery  Holder
                                            )

                                        [1] => Array
                                            (
                                                [product_id] => 139
                                                [name] => Jewellery Holder
                                            )

                                            )

                                    )

                            )

                        [1] => Array
                            (
                                [category_id] => 67
                                [name] => DINING ROOM
                                [sub_category] => 0
                                [product_total] => 73
                                [products] => Array
                                    (
                                        [0] => Array
                                            (
                                                [product_id] => 248
                                                [name] => Amuse
                                            )

                                        [1] => Array
                                            (
                                                [product_id] => 239
                                                [name] => Amuse
                                            )

                                            )
                                            .
                                            .
                                            .
       [1] => Array
            (
                [category_id] => 101
                [name] => Drink
                [sub_category] => Array
                    (
                        [0] => Array
                            (
                                [category_id] => 103
                                [name] => Coffees 
                                [sub_category] => 0
                                [product_total] => 14
                                [products] => Array
                                    (
                                        [0] => Array
                                            (
                                                [product_id] => 229
                                                [name] => Cafe1
                                            )

                                        [1] => Array
                                            (
                                                [product_id] => 233
                                                [name] => Cafe2

                                            )

我真的不确定你在问什么。看起来您只想打印出 Coffees 中的值。使用 if (...) continue;.

跳过与您想要的条件不匹配的类别和子类别
for (NSDictionary *dict in [_dic objectForKey:@"categories"]) {

    if (![dict[@"name"] isEqualToString:@"Drink"]) continue;

    for (NSDictionary *subcategory in [dict valueForKey:@"sub_category"])
    {

        if (![subcategory[@"name"] isEqualToString:@"Coffees"]) continue;

        for (NSDictionary *product in subcategory[@"products"]) {
            [_arraySubCategory addObject:product[@"name"]];
        }

    }

}

您还应注意,您作为 JSON 发布的内容 无效 JSON。这似乎是来自 PHP 的 print_r