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{
}
解析如下