0

我当前使用的没有 json 的代码是:

parts = [NSArray arrayWithObjects:
            [[part alloc] initWithpartName:@"Part1" imageName:@"picture1.jpg"],
             [part alloc] initWithpartName:@"Part2" imageName:@"picture2.jpg"],
             [part alloc] initWithpartName:@"Part3" imageName:@"picture3.jpg"]
            nil];

我获取的json是:

  [{"id":"1","case_name":"NZXT Phantom 
410","case_description":"","case_type":"ATX","case_color":"White","case_price":"99.99","case
_image":""},{"id":"2","case_name":"Thermaltake 
MK+","case_description":"","case_type":"ATX","case_color":"Black","case_price":"84.99","case
_image":""}

我用它来获取它:

NSString *urlString = [NSString stringWithFormat:@"http://site.com/get/parts/part.php?part=case"];

        NSURL *url = [NSURL URLWithString:urlString];

        NSString *data = [NSData dataWithContentsOfURL:url];

问题:我怎么能把这个 json 放到这个数组中?我有 SBJson,我尝试使用它:

SBJsonParser *parser = [[SBJsonParser alloc] init];

        parts = [[parser objectWithString:data error:nil] copy];

有人可以纠正我如何用颜色、描述、类型等额外数据解析它

4

1 回答 1

0

当您使用 SBJSON 或任何其他 JSON 解析器来解析此 JSON 字符串时,您将得到一个 NSArray,其中数组的每个项目都是一个 NSDictionary。您要查找的键/值对将在这些字典中。它不会直接为您提供“部分”对象的数组 - 您必须手动编写代码来执行此操作。

如果这是您要尝试做的,那么代码将如下所示:

NSMutableArray *result = [[NSMutableArray *alloc] init];
NSArray *jsonObj = [parser objectWithData:data];
[jsonObj enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop) {
    Part *part = [[part alloc] initWithPartName:[dict objectForKey:@"case_name"]
                                      imageName:[dict objectForKey:@"case_image"]];
    [result addObject:part];
}];

如果您的 Part 类中有更多字段要使用 JSON 中的数据进行填充,则可以添加代码,根据 的结果dict objectForKey:使用适当的键名(例如id或)设置这些字段case_description

于 2012-08-16T16:53:36.970 回答