zoukankan      html  css  js  c++  java
  • <HTTP>利用第三方包SBJson来进行IOS下的Json解析

      Json格式化校验网站:http://www.bejson.com/

      这个网站可以可视化的展示Jason内容,校验Json中的错误。

      解析Json有四种方式:touchJson、SBJson、JSonKit和系统解析方法。

      下面主要介绍SBJson解析Json的方法:

      首先在Build Phases中需要导入库文件:libxml2.dylib。

      然后导入第三方包GDataXMLNode.h和GDataXMLNode.m文件

      新建程序,利用NSConnection方法或者ASIHTTPRequest方法下载XML文件,下面以ASIHTTPRequest方法为例,在ASIHTTPRequestDelegate协议方法中进行XML文件解析。

    -(void)requestFinished:(ASIHTTPRequest *)request
     1 -(void)requestFinished:(ASIHTTPRequest *)request
     2 {
     3     [mData setLength:0];
     4     [mData appendData:[request responseData]];
     5     //用字典来接受下载的Json数据
     6     NSDictionary *dict = [mData JSONValue];
     7     //得到entry标签内的所有内容,放入数组中
     8     NSArray *array = [dict objectForKey:@"entry"];
     9     mArray = [[NSMutableArray alloc] initWithCapacity:20];
    10     //遍历得到的数组,此处解析的关键是理清出内部的字典和数组的层级关系,而且其中的数组不能使用index来取得元素,必须进行遍历
    11     for (NSDictionary *dic in array) {
    12         InfoItem *item = [[InfoItem alloc] init];
    13         //读出标题
    14         NSDictionary *title_dic = [dic objectForKey:@"title"];
    15         NSString *title = [title_dic objectForKey:@"$t"];
    16         //赋给模板类
    17         item.title = title;
    18         //读作者
    19         NSMutableString *auther_name = [[[NSMutableString alloc] init] autorelease];
    20         NSArray *arr_au = [dic objectForKey:@"author"];
    21         for (NSDictionary *dic_au in arr_au) {
    22             NSDictionary *au_name = [dic_au objectForKey:@"name"];
    23             [auther_name appendString:[au_name objectForKey:@"$t"]];
    24         }
    25         //赋给模板类
    26         item.author = auther_name;
    27         //读图片
    28         NSString *str_pic;
    29         NSArray *arr_pic = [dic objectForKey:@"link"];
    30         for (NSDictionary *dic_pic in arr_pic) {
    31             if ([[dic_pic objectForKey:@"@rel"] isEqualToString:@"image"]) {
    32                 str_pic = [dic_pic objectForKey:@"@href"];
    33             } }
    34         //赋给模板类
    35         item.pic = str_pic;
    36         [mArray addObject:item];
    37     }
    38 }
  • 相关阅读:
    携程开源框架Apollo基础学习(一)
    nslookup,dig,host的用法详解
    curl命令学习
    Saltstack本地管理无master模式
    Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
    JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
    #{}和${}的区别是什么?
    为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
    MyBatis 与 Hibernate 有哪些不同?
    MyBatis 的好处是什么?
  • 原文地址:https://www.cnblogs.com/robinkey/p/2760484.html
Copyright © 2011-2022 走看看