zoukankan      html  css  js  c++  java
  • 解析Json数据

     #pragma mark 解析XML数据
    - (NSArray *)parseXMLData:(NSData *)data error:(NSString **)error{
        NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
        // 设置代理
        parser.delegate = self;
        // 开始解析(阻塞式方法)
        [parser parse];
        [parser release];

        // 说明有错误信息
        if (_error) {
            *error = _error;
        }
        return _videos;
    }

    #pragma mark - XML解析代理的方法
    #pragma mark 开始解析XML的时候调用
    - (void)parserDidStartDocument:(NSXMLParser *)parser {
        //NSLog(@"开始解析XML");
    }
    #pragma mark 解析到某一个标签的开头就会调用 <videos> <video>
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
        //NSLog(@"解析到某一个标签的开头:%@", elementName);
        
        // 如果解析到videos标签
        if ([kVideos isEqualToString:elementName]) {
            _error = [attributeDict objectForKey:kError];
            // 有错误信息
            if (_error) {
                // 停止解析
                [parser abortParsing];
            } else {
                // 初始化一个数组存放Video对象
                _videos = [NSMutableArray array];
            }
        } else if ([kVideo isEqualToString:elementName]) {
            // 如果解析到video标签
            Video *video = [Video videoWithDict:attributeDict];
            [_videos addObject:video];
        }
        
    }
    #pragma mark 解析到某一个标签的结尾时就会调用 <videos/> <video/>
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
        //NSLog(@"解析到某一个标签的结尾:%@", elementName);
    }


    #pragma mark 解析完毕的时候调用
    - (void)parserDidEndDocument:(NSXMLParser *)parser {
        //NSLog(@"解析完毕");
    }
    /**
     *
     {"error":"用户名不存在"}
    {"error":"密码不正确"}
     
    {"videos":
     [
     { "id":1, "name":"第1部", "length":40 },
     { "id":2, "name":"第2部", "length":41 }
     ]
    }
     */
    #pragma mark- 解析JSON数据
    - (NSArray *)parseJSONData:(NSData *)data error:(NSString **)error {
        NSMutableArray *videos = nil;
        
        NSDictionary *dict = [data JSONValue];
        
        NSString *myerror = [dict objectForKey:kError];
        // 有错误信息
        if (myerror) {
            *error = myerror;
        } else {
            NSArray *array = [dict objectForKey:kVideos];
            videos = [NSMutableArray array];
            for (NSDictionary *obj in array) {
                Video *v = [Video videoWithDict:obj];
                [videos addObject:v];
            }
        }
        
        return videos;
    }

     
     
  • 相关阅读:
    nginx php-fpm 输出php错误日志
    图解phpstorm常用快捷键
    Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)
    Mac Terminal
    Git安装与配置
    Linux ulimit
    tcpdump
    Linux 基础
    TCP
    HTTP
  • 原文地址:https://www.cnblogs.com/wangshengl9263/p/3052187.html
Copyright © 2011-2022 走看看