iOS之json和XML的数据

JSON数据

  • JSON是一种轻量级的数据交换格式
  • 必须是键值对存在
  • 键值必须是双引号(严格的规范),非严格的可以使用 单引号
json字符串转化成OC对象
//json数据
    
    NSString *jsonStr =@"\{\"user_id\":\"1\",\"userName\":\"CC\"}";
    
    
    NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
    
    /*
     
     NSJSONReadingMutableContainers = (1UL << 0), 容器,可变的字典/数组
     NSJSONReadingMutableLeaves = (1UL << 1), 内部的所有的字符串都是可变的
     NSJSONReadingAllowFragments = (1UL << 2) 既不是字典也不是数组
     
     */
   id obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    
    NSLog(@"%@",obj);

注意:jsonStr字符串的转化/转义符

OC对象转化JSON
  • 判断是否可以转化 -> isValidJSONObject:
   NSDictionary *dic = @{@"name":@"test",@"age":@"18"};
 //判断是否可以转化
    BOOL isValid =  [NSJSONSerialization isValidJSONObject:dic];
    if (isValid != YES) {
        return;
    }
    /*
     NSJSONWritingPrettyPrinted = (1UL << 0),

    NSJSONWritingSortedKeys AP
     */
    
    NSData *data1= [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
    
    NSLog(@"%@",[[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding]);
    
    //结果
    {
    "name" : "test",
    "age" : "18"
   }
XML数据格式
格式如下
<data>
	<message type="chat" to="062cafca-8812-4313-b28b-aa46010bd1b3@conference.win-arbj87ei5km" message_type="1" message_data = "测试聊天">
        
    </message>
    
    <message xmlns="jabber:client" to="04eb8257-927b-4605-94a5-aa0d00996bf1@win-arbj87ei5km" type="chat" from="32591b84-37b9-4325-9f1f-aa1100d8bff1@win-arbj87ei5km/1.1" message_type="1" message_data = "在不,哈哈">
     
    </message>
    
    <message type="chat" to="32591b84-37b9-4325-9f1f-aa1100d8bff1@win-arbj87ei5km" message_type="1" message_data = "我在呢">
       
    </message>
    
    <message type="chat" to="32591b84-37b9-4325-9f1f-aa1100d8bff1@win-arbj87ei5km" message_type="1" message_data = "可以走通不">
        
    </message>


</data>
XML的数据解析
  • 系统提供的NSXMLParser进行解析
  • 利用第三方解析GDataXML
NSXMLParser进行XML数据解析
- (void)viewDidLoad {
    [super viewDidLoad];
   
    //XML的解析
    
    // 系统提供 NSXMLParser
    
    // GDataXML
    
//    NSXMLParser
    
    //1.获取数据
    NSString *path = [[NSBundle mainBundle] pathForResource:@"120" ofType:@"xml"];
    NSData *data = [NSData dataWithContentsOfFile:path];
    //2.创建XML解析器
    NSXMLParser *xmlp = [[NSXMLParser alloc] initWithData:data];
    
    //设置代理
    xmlp.delegate = self;
    //开始解析
    
    [xmlp parse];
    
 
}

比较重要的代理方法

//MARK:---代理方法

// 开始解析XML文档的时候
- (void)parserDidStartDocument:(NSXMLParser *)parser{
    
}




// 获取解析元素的时候调用 属性
- (void)parser:(NSXMLParser *)parser didStartElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(nonnull NSDictionary<NSString *,NSString *> *)attributeDict{
    
    NSLog(@"%@----%@",elementName,attributeDict);
    
    
}

//获取节点内容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
   
    
 
}


//结束解析元素的时候调用
- (void)parser:(NSXMLParser *)parser didEndElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName{
    
}


//解析XML文档结束
- (void)parserDidEndDocument:(NSXMLParser *)parser{
    
}

解析如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值