从子类别中检索特定的 JSON 键
Retrieve specific JSON key from subcategory
我在我的 TableView 上仅从服务器检索数据一次 JSON,并且工作正常。我无法打印 JSON 中的特定主题。
例如,根据我的 JSON,我只想打印 Dining Room
或 Coffees
的名称,而不打印 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
。
我在我的 TableView 上仅从服务器检索数据一次 JSON,并且工作正常。我无法打印 JSON 中的特定主题。
例如,根据我的 JSON,我只想打印 Dining Room
或 Coffees
的名称,而不打印 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
。