最近做一个项目遇到一个问题就是,我在读取之前写好的json后需要记录浏览了那些活动,这些活动不仅还有活动的名称,还有有关活动的一系列资源(包括图片,音频,视频)这些资源也是以json格式存放的。我解决这个问题的思路首先活动的名字当然好保存,重点是如何保存那些资源,也就是保存json格式。通过查阅资料找到一种方法与大家共享。若大家还有更高效的方法,也请不要吝啬哦!
OK!开始正文:
首先要将你读取到的字典转成NSData格式,这一步是很重要的,你不能直接把字典写进文件中,因为这样做的话你在读取解析时候获得的json是控制,我觉得这个应该是数据存储解析的问题。所以我采用了将字典转成NSData格式,然后将NSData转成NSString,再将NSString值写进文件中:
NSData *tempData = [self toJSONData:self.dataDictionary];
NSString *jsonString = [[NSString alloc] initWithData:tempData
encoding:NSUTF8StringEncoding];
- (NSData *)toJSONData:(id)theData{
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData
options:NSJSONWritingPrettyPrinted
error:&error];
if ([jsonData length] > 0 && error == nil){
return jsonData;
}else{
return nil;
}
}
这里就可以把jsonString写进文件了。
然后就是读取解析的时候了:
NSError *error = nil;
NSDictionary *dicFromJSON =
[NSJSONSerialization JSONObjectWithData: [jsonString dataUsingEncoding:NSUTF8StringEncoding]
options: NSJSONReadingMutableContainers
error: &error];
读取的时候就可以将获得的NSString值通过系统的方法从json格式转成字典了。