iOS--封装好的json解析

      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。

json的两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象(字典):对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

代码实现:
Json.h

@interface Json : NSObject

@property(nonatomic, retain)NSMutableArray *array;

@property(nonatomic,retain)NSMutableDictionary *dic;

// 提供的外部接口,根据第一层是数组还是字典来调用不同的方法

- (NSMutableArray *)jsonParser:(NSString *)name type:(NSString *)type;

- (NSMutableDictionary *)jsonParserDic:(NSString *)name type:(NSString *)type;

@end


Json.m

@implementation Json


- (void)dealloc

{

    [_dic release];

    [_array release];

    [super dealloc];

}

- (instancetype)init

{

    self = [super init];

    if (self) {

        // 初始化中对数组和字典这种容器进行初始化

        self.array = [NSMutableArray array];

        self.dic = [NSMutableDictionary dictionary];

    }

    return self;

}


- (NSMutableArray *)jsonParser:(NSString *)name type:(NSString *)type;

{

    // 提取路径

    NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:type];

    // 根据路径提取数据

    NSData *data = [NSData dataWithContentsOfFile:path];

    // 将解析完的数据付给数组

    self.array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

    return self.array;

}


- (NSMutableDictionary *)jsonParserDic:(NSString *)name type:(NSString *)type

{

    NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:type];

    NSData *data = [NSData dataWithContentsOfFile:path];

    // 将解析完的数据付给字典

    self.dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

    return self.dic;

}

@end


这个封装好的json解析是根据已有的json文件来解析的,可以根据数据文件最外层的结构来选择调用哪个方法来对数据进行解析.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值