iOS网络编程之JSON简单介绍
来源:互联网 发布:js indexof undefined 编辑:程序博客网 时间:2024/05/17 22:24
JSON简单介绍
一种轻量级的数据交换格式。它基于ECMAScript的一个子集
JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
"firstName":"John",
这很容易理解,等价于这条 Objective-C 语句:
[dic setValue:@"John" forKey:@"firstName"];
JSON 值
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
基础结构
JSON 结构有两种结构: 对象和数组
json简单说就是Objective-C中的字典和数组,所以这两种结构就是字典和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、字典:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值。2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
JSON格式
{
“name”: “中国”,
“province”: [{
“name”: “黑龙江”,
“cities”: {
“city”: [“哈尔滨”, “大庆”]
}
}, {
“name”: “广东”,
“cities”: {
“city”: [“广州”, “深圳”, “珠海”]
}
}, {
“name”: “台湾”,
“cities”: {
“city”: [“台北”, “高雄”]
}
}, {
“name”: “新疆”,
“cities”: {
“city”: [“乌鲁木齐”]
}
}]
}
代码解析
//获取文件路径 NSString * path=[[NSBundle mainBundle] pathForResource:@"test.json" ofType:nil]; //将文件转换为数据 NSData * data=[NSData dataWithContentsOfFile:path]; //将数据序列化为字典 NSDictionary * dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves//返回的JSON对象中字符串的值为NSMutableString,目前在iOS 7上测试不好用,应该是个bug,可简单理解为返回对象不可变 error:nil];// NSJSONReadingMutableContainers 返回可变容器,NSMutableDictionary或NSMutableArray// NSJSONReadingAllowFragments:允许JSON字符串最外层既不是NSArray也不是NSDictionary,但必须是有效的JSON Fragment。例如使用这个选项可以解析 @“123” 这样的字符串。(这个方法不常用) //接收字典中的值并打印 NSString * name=dic[@"name"]; NSLog(@"name==%@",name); NSArray * province=dic[@"province"]; [province enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSDictionary * dic=obj; NSString * name=dic[@"name"]; NSDictionary * cities=dic[@"cities"]; NSArray * city=cities[@"city"]; NSLog(@"\n"); [city enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"name==%@,city[%ld]==%@",name,idx,obj); }]; }];
- iOS网络编程之JSON简单介绍
- IOS网络编程简单介绍
- iOS网络编程:网络交互数据格式解析之json
- IOS网络编程介绍
- iOS开发之网络编程:XML,JSon解析
- iOS开发之网络编程篇四:XML,JSon解析
- iOS 网络编程之TCP/IP <一>框架介绍
- SOCKET网络编程(简单介绍)
- iOS之网络编程
- iOS 开发 之网络编程简单总结转载
- 网络编程知识总结 之 简单的iOS HTTP服务器
- iOS开发网络篇—JSON介绍
- iOS开发网络篇—JSON介绍
- iOS开发网络篇—JSON介绍
- iOS开发网络篇—JSON介绍
- iOS开发网络篇—JSON介绍
- iOS网络编程3—JSON解析
- iOS 网络编程 (四)JSON解析
- Python 的 class attributes 和 instance attributes 的区别
- objective-C:Day3~Day4
- 虚拟机的使用
- codeforces-559B-Equivalent Strings
- 10分钟教会你Apache Shiro
- iOS网络编程之JSON简单介绍
- Objective-C:Day5
- 平铺图片被截图时页面卡死2秒钟的问题
- final 实例域+final类+final方法(阻止继承)
- 设置虚拟机可访问本机数据库
- 自然语言处理
- Cloud Design Pattern - CQRS Pattern (读写隔离模式)
- Linux系统中strace命令的使用教程
- Schema约束