我必须从嵌套的 JSON 中读取一些值,但我无法正确读取它们。 JSON 看起来像这样:
"addons" : [
{
"group_title" : "Veggie Toppings",
"group_type" : "T",
"item_id" : "29",
"addon" : [
{
"id" : "31",
"item_title" : "Ham"
},
{
"id" : "32",
"item_title" : "Mushrooms"
}
]
},
{
"group_title" : "Meat Toppings",
"group_type" : "T",
"item_id" : "33",
"addon" : [
{
"id" : "30",
"item_title" : "Sausage"
}
]
}
我的代码是:
-(void)setData:(NSMutableDictionary *)menuItems{
self.menuItem = menuItems;
// [GSDVActivityIndicator stopWithID:kNotificationHello];
self.dictionaryOrder = [NSMutableDictionary dictionaryWithDictionary:[self.menuItem valueForKey:@"order"]];
self.arrayPrices = [NSArray arrayWithArray:[self.menuItem valueForKey:@"price"]];
self.arrayAddons = [NSArray arrayWithArray:[self.menuItem valueForKey:@"addons"]];
self.myAddons = [NSArray arrayWithArray:[self.arrayAddons valueForKey:@"addon"]];
[self setViewGUIData];
NSLog ( @"addons= %@", [self.arrayAddons valueForKey:@"Group_title]);
NSLog ( @"addon = %@", [self.myAddons valueForKey:@"item_title"]);
}
结果是:
2014-03-24 19:48:04.446 [3698:70b] addons= (
"Veggie Toppings",
"Meat Toppings"
)
2014-03-24 19:48:04.447 [3698:70b] addon = (
(
Ham,
Mushrooms
),
(
"Sausage"
)
)
所以问题出在第二部分,其中“火腿、蘑菇和香肠”项的格式不正确,我无法阅读它们并将它们放在标签中。显然这条线是错误的:
self.myAddons = [NSArray arrayWithArray:[self.arrayAddons valueForKey:@"addon"]];
但是我不知道怎么修改。
谢谢。
最佳答案
您所做的工作正常。 "addon"的值为 [{"id": "31", "item_title": "Ham"}, {"id": "32", "item_title": "Mushrooms"}]
和 {"id": "30","item_title": "Sausage"}
,因此 valueForKey
为您提供了一个包含这两个值的数组。
你没有说出你想要什么格式,但我猜你想要一个简单的列表。您可以只创建一个数组,遍历组,然后放入每个插件:
NSMutableArray* addons = [NSMutableArray array];
NSArray* groups = [self.menuItem valueForKey:@"addons"];
[groups enumerateObjectsUsingBlock:^(NSDictionary* group, NSUInteger idx, BOOL *stop) {
NSArray* addonsInThisGroup = group[@"addon"];
[addonsInThisGroup enumerateObjectsUsingBlock:^(NSDictionary* addon, NSUInteger idx, BOOL *stop) {
[addons addObject:addon];
}];
}];
这会导致:
[
{"id" : "31", "item_title" : "Ham"},
{"id" : "32", "item_title" : "Mushrooms"},
{"id" : "30","item_title" : "Sausage"}
]
关于ios - Objective C 如何读取嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618133/