在目标C中读取JSON文件

TomQDRS:

我已经搜索了大约两个小时,似乎没人清楚如何在Objective C中读取JSON文件

假设我有一个名为的JSON文件colors.json,如下所示:

{
    "colors": [{
        "name": "green",
        "pictures": [{
            "pic": "pic1.png",
            "name": "green1"
        }, {
            "pic": "pic2.png",
            "name": "green2"
        }]
    }, {
        "name": "yellow",
        "pictures": [{
            "pic": "pic3.png",
            "name": "yellow1"
        }]
    }]
}
  1. 将该文件复制到XCode路径中的哪里?

  2. 如何以编程方式获取此文件?

  3. 获得此文件后-如何读取name每个colors对象

  4. 我该怎么说“对于具有名称的颜色中的每张图片,在NSString中green获取name值”?

我一直在尝试一些方法,但尚未得出结论。我只是在理解JSON的概念错误吗?

西蒙:

只需将JSON文件拖到Xcode的项目导航器窗格中,即可将其与类文件显示在同一位置。

确保选中“如果需要,复制项目”复选框,然后将其添加到正确的目标中。

然后执行以下操作:

- (void)doSomethingWithTheJson
{
    NSDictionary *dict = [self JSONFromFile];

    NSArray *colours = [dict objectForKey:@"colors"];

    for (NSDictionary *colour in colours) {
        NSString *name = [colour objectForKey:@"name"];
        NSLog(@"Colour name: %@", name);

        if ([name isEqualToString:@"green"]) {
            NSArray *pictures = [colour objectForKey:@"pictures"];
            for (NSDictionary *picture in pictures) {
                NSString *pictureName = [picture objectForKey:@"name"];
                NSLog(@"Picture name: %@", pictureName);
            }
        }
    }
}

- (NSDictionary *)JSONFromFile
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"colors" ofType:@"json"];
    NSData *data = [NSData dataWithContentsOfFile:path];
    return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章