iOS 如何用JSONKit读写JSON文件
JSON文件格式简单,使用方便,值得一用。
目前已经有多个库支持Json文件的解析,在这之中,JSONkit用起来方便,而且效率比较高,本文介绍的就是JSONKit的使用方法。
1、准备工作
下载JSONKit包:http://download.csdn.net/detail/enuola/4523160
2、写json文件
- 创建文件
//创建文件目录以及文件,需要用到filemanager
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- testDirectory = [documentsDirectory stringByAppendingPathComponent:@"data"];
- [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];
- letterllkPath = [testDirectory stringByAppendingPathComponent:@"letterllk.json"];
- 打开文件准备写
- //打开文件,需要用到NSFileHandle
- NSFileHandle *letterHandle = [NSFileHandle fileHandleForWritingAtPath:letterllkPath];
- 将内容转换为json数据
- NSString
- NSArry
- NSDictionary
- //原始数据
- NSString *str = ….;
- NSArry *arry = ….;
- NSDictionary *dic = …;
- //转换成JSon字符串,就是将原始数据打包
- NSString *strJson = [str JSONString];
- NSString *arryJson = [arry JSONString];
- NSString *dicJson = [dic JSONString];
- //或者直接转换成NSData*
- NSData *strData = [str JSONData];
- NSData *arryData = [arry JSONData];
- NSData *dicData = [dic JSONData];
- 将转换后的json数据写入文本
- [letterHandle seekToEndOfFile];
- [letterHandle writeData:[strJson dataUsingEncoding:NSUTF8StringEncoding]];
- 或者
- [letterHandle writeData:strData];
3、读json文件
- 读取文件内容
- NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"json"];
- NSString *jsonString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
- 用json解析内容
- //根据json文件,逐层解析
- NSError *error;
- id rawData = [jsonString objectFromJSONStringWithParseOptions:JKParseOptionNone error:&error];
- if ( error != nil ) {
- }
- if ( [rawData isKindOfClass:[NSDictionary class]] )
- {}
- else if ( [rawData isKindOfClass:[NSArray class]] ) {
- }
- else {
- }
4、总结
Json的编码格式主要包括:
- []代表NSArry类
- {}代表一个对象,比如NSDictionary
- ,代表对象分隔符
- :代表键值对,或者可以理解为赋值=
JSONkit其实就是自动的帮你将原始数据加上这些符号,或者相反的,去除这些符号
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。