黑马程序员技术交流社区

标题: 数据解析JSON、XML [打印本页]

作者: 小小小笑    时间: 2015-4-18 18:24
标题: 数据解析JSON、XML
JSON
1、序列化(流):将字典或者数组发送给服务器之前,转化成二进制数据,方便网络传输
2、反序列化  :把从服务器接收到的二进制数据转换成NSDictionary 、 NSArray,简化程序开发,便于后续的字典转模型

JSON解析工具
0、苹果原生提供的反序列化方法:必须是iOS5.0以上版本
1、JSONKit:iOS5.0以下
(1)MRC的
(2)基本使用 + 性能测试
【亲测结果】— 比苹果原生的慢,性能较差


2、SBJson


3、TouchJSON

XML --可扩展标记语言
1、与HTML区别:HTML标记格式是固定的,但是XML是不固定的,可以复杂嵌套
2、两个解析方式:
(1)DOM解析

(2)SAX解析:
—》打开文档
—》开始节点:<videos>
                              <name>...
—》发现节点内容:xxx,一个内容可能会被解析多次
—》结束节点:    </name>
                           </videos>   最后一个结束节点
—》结束文档
以上步骤中,2、3、4会重复执行,直到整个XML解析完成


其他注意点:
1、以后看到**类型的参数,又不想获取对应的内容,传入NULL就可以,传入nil也不会报错。
2、可以通过百度查到国家气象局的气象免费接口。
3、为什么要使用NSNumber?不用int
(1)反之服务器返回NULL,使用int设置会崩溃。
4、【亲测】可以使用id,作为属性
5、解决数组,字典不能输出中文的问题,使用NSArray的分类
#import "NSArray+Log.h"
@implementation NSArray (Log)
// 重写这个方法,就能够解决输出问题
// 专门为了本地话提供的一个调试方法,只要重写,不需要导入头文件,程序中所有的 NSLog 数组的方法,都会被替代
- (NSString *)descriptionWithLocale:(id)locale {
    NSMutableString *strM = [NSMutableString stringWithString:@"(\n"];
   
    // 遍历数组,拼接字符串
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [strM appendFormat:@"\t%@,\n", obj];
    }];
   
    [strM appendString:@")\n"];
   
    return [strM copy];

}
@end




作者: 邹志鹏    时间: 2015-4-19 17:11
怎么看着很像哥的笔记呢!
作者: 我是小菜蛋    时间: 2015-4-19 17:16
哇塞,好厉害
作者: 小小小笑    时间: 2015-4-19 17:27
邹志鹏 发表于 2015-4-19 17:11
怎么看着很像哥的笔记呢!

哥哥,你是谁呀?我作为一个大V怎么会随便写笔记呢??




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2