【问题标题】:Read JSON file in Objective C [closed]在Objective C中读取JSON文件[关闭]
【发布时间】:2017-05-04 17:34:22
【问题描述】:

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

假设我有一个名为 colors.json 的 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. 获得此文件后 - 如何读取每个 colors 对象的 name 值?

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

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

【问题讨论】:

  • 好吧,说实话,你一定是搜索错了。与其搜索all in one,不如搜索以下方式: 1. 如何将文件添加到我的Xcode 项目中? 2.如何使用objective c以编程方式读取文件? 3. 如何解压JSON文件objective C?
  • 如果我还没有这样做,你真的认为我会在这里问一个问题吗?
  • 1: stackoverflow.com/questions/27642521/… 2: stackoverflow.com/questions/27206176/… 3&4: 都是解析JSON,有很多问题,找NSJSONSerialization
  • @Larme 这个问题还不错,当我搜索“解析 JSON 文件目标”时,这实际上是 Stack Overflow 上唯一的 Google 搜索命中(也是排名第一的搜索命中) C”。如果我通过搜索[ios] [objective-c] [json] parse 来挖掘 SO,那么 IMO 的结果比这个更清晰,而且答案也更差。如果您有规范链接,请将其粘贴,否则 Google 似乎认为 这是规范的。就我个人而言,我已经知道 1 和 2,如果我们从这个问题中编辑出来,这个问题对于 (3) 来说非常好
  • @Larme 当我写这个问题时,我才刚刚开始进行实际的应用程序开发,并且在 iOS 系统和目标 C 方面都陷入了冷水。我意识到可以看到这个问题作为“太宽泛”,但它提出的问题对我来说在逻辑上是相关的,因为它们都是我完全不清楚的一个过程的所有步骤。当时要么没有关于这些步骤的单一问题,要么我不知道如何寻找它们。如果这个问题不再说已结束,我将不胜感激,因为它的答案很棒而且也很受欢迎。

标签: ios objective-c json


【解决方案1】:

只需将您的 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];
}

【讨论】:

  • 谢谢!这正是我需要的,你是生命的救星! :)
  • 不要使用- (NSDictionary *)JSONFromFile,最好使用- (id)JSONFromFile。这允许获取数组和字典。
猜你喜欢
  • 2020-09-15
  • 2013-03-15
  • 2012-11-28
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
相关资源
最近更新 更多