iOS開發中,讀取JSON文件是常見的操作。假設已經有json文件存儲在本地工程目錄下,那么接下來就需要使用一些工具來幫助讀取、解析JSON。
下面介紹兩種常用的讀取JSON的工具。
1. NSJSONSerialization
NSJSONSerialization是iOS內置的JSON解析器,通過使用這個類可以方便地將本地JSON文件解析為NSDictionary或NSArray。
//獲取json文件路徑
NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
if ([jsonObject isKindOfClass:[NSDictionary class]]) {
NSDictionary *dict = (NSDictionary *)jsonObject;
// do something with dictionary
} else if ([jsonObject isKindOfClass:[NSArray class]]) {
NSArray *array = (NSArray *)jsonObject;
// do something with array
}
這段代碼會將本地工程目錄下的data.json文件讀取為NSData類型的數據,然后使用NSJSONSerialization進行解析。如果解析成功,jsonObject將會是NSDictionary或NSArray類型的對象,這里可以根據實際情況進行判斷后根據需要進行處理。
2. AFNetworking + Mantle
AFNetworking是iOS上廣受稱贊的網絡庫,而Mantle則是一個輕量級的模型轉換庫,其中包含了JSON到Model的轉換方法。
在使用AFNetworking的過程中,可以通過引入Mantle來輕松地將網絡請求返回的JSON數據轉換為Model數據:
[[NetworkManager sharedInstance] getRequestWithURL:@"https://api.url" params:params success:^(NSURLSessionDataTask *task, id responseObject) {
// 調用 Mantle 的方法
NSArray *modelArray = [MTLJSONAdapter modelsOfClass:[MyModel class] fromJSONArray:responseObject error:nil];
// do something with modelArray
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@", error);
}];
這里調用API請求返回的數據為JSON格式,使用Mantle進行解析。方法的返回值是一個數組,也可以根據實際需要進行修改。
綜上,在iOS中,讀取JSON是常見的操作,可以通過使用NSJSONSerialization和AFNetworking結合Mantle兩種方式進行轉換。
上一篇ios里的json文件
下一篇vue的怎么調用