如何从本地JSON文件将数据加载到ViewController

12

我正在开发一款iPhone应用程序,需要在TableView中显示存储的数据。经过一些调查,我决定使用JSON来存储数据。但是,我找不到任何教程来解释如何读取作为本地文件的JSON,而不是通常情况下从远程源读取。

您能推荐一些教程吗?


当你说“本地文件”时,是指JSON文件存储在文档目录中还是作为应用程序包中的资源嵌入其中? - neilco
顺便提一下,虽然JSON是一种很好的格式(特别是用于与服务器交换数据),但如果这只是一个本地资源,那么属性列表(又称“plist”文件)可能更简单。您可以使用[dictionary writeToFile:path atomically:YES];创建属性列表文件。您可以使用NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path];读取属性列表。这比使用JSON更不麻烦。 - Rob
2个回答

23
首先,您需要加载本地的JSON字符串。假设JSON字符串在您的项目中,请创建指向该文件的NSString来加载它:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"THENAMEOFTHEFILE" ofType:@"EXTENSIONOFYOUTFILE"];

其次,加载文件的数据:

NSData *content = [[NSData alloc] initWithContentsOfFile:filePath];

第三步,解析数据:

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:content options:kNilOptions error:nil];

15
您可以使用NSJSONSerialization来实现。
NSError *deserializingError;
NSURL *localFileURL = [NSURL fileURLWithPath:pathStringToLocalFile];
NSData *contentOfLocalFile = [NSData dataWithContentsOfURL:localFileURL];
id object = [NSJSONSerialization JSONObjectWithData:contentOfLocalFile 
                                            options:opts 
                                              error:&deserializingError];

NSURL 没有名为 urlWithString 的方法。如果您想从文件路径创建一个 NSURL,您需要使用 NSURL fileURLWithPath: - rmaddy
抱歉,大小写有误,应该是URLWithString。但你是对的,fileURLWithPath:是处理文件路径的正确方式。 - matehat
4
我可以为您进行翻译。这段代码使用了Objective-C语言,目的是将名为"employees.json"的文件中存储的JSON格式数据解析为可操作的对象。具体实现过程如下:首先,通过指定文件名和文件类型,获取JSON文件在应用程序包中的路径,并将其作为字符串类型赋值给变量“jsonPath”。然后,使用“dataWithContentsOfFile”方法将文件内容读入到NSData类型的对象“data”中。接着,使用“NSJSONSerialization”类的“JSONObjectWithData”方法将NSData对象“data”转换为可以操作的id类型的JSON对象“json”。最后,如果在这个过程中发生错误,则将其保存在NSError类型的对象“error”中。 - es1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接