什么是Json? 请百度…
本质就是String,是一种有格式的String.
在Swift中,使用NSJSONSerialization对象,进行解析.
1:将对象(字典/数组)转换成Json String
需要注意:并不是所有的对象都能转换成Json,必须满足以下条件:
1,顶层对象必须是NSArray或者NSDictionary
2,所有的对象必须是Nsstring、NSNumber、NSArray、NSDictionary、NSNull的实例
3,所有NSDictionary的key必须是Nsstring类型
4,数字对象不能是非数值或无穷
可以使用NSJSONSerialization.isValidJSONObject方法,判断是否可以转换.
//1:定义一个字典
let bean2 = ["str1": "string","str2": 2,"str3": 2.2,"str4": ["ss1": "sss","ss2": 2,"ss3": 2.2]]
//2:将字典转换成NSData类型
//let data = try? NSJSONSerialization.dataWithJSONObject(bean2,options: .PrettyPrinted)//这种方法输出的Json字符创,会自动添加空格,和换行.输出的格式会很漂亮
let data = try? NSJSONSerialization.dataWithJSONObject(bean2,options: [])//输出一个紧凑的Json字符串,没有换行,没有空格.
//3:将NSData转换成String
//let nsstring = Nsstring(data: data!,encoding: NSUTF8StringEncoding)//这是OC中的Nsstring类型
let string = String(data: data!,encoding: NSUTF8StringEncoding)//一般使用此方法,这是Swift封装过的String类型,性能比Nsstring好
//输出结果
//{"str2":2,"str3":2.2,"str4":{"ss1":"sss","ss2":2,"ss3":2.2},"str1":"string"}//无格式的输出
//有格式的输出
{
"str2" : 2,"str3" : 2.2,"str4" : {
"ss1" : "sss","ss2" : 2,"ss3" : 2.2
},"str1" : "string"
}
2:将Json转换成对象(字典/数组)
//1:定义Json字符串
let string = "{\"str2\":2,\"str3\":2.2,\"str4\":{\"ss1\":\"sss\",\"ss2\":2,\"ss3\":2.2},\"str1\":\"string\"}"
//2:将String转换成NSData
let nsData = string.dataUsingEncoding(NSUTF8StringEncoding)
//let nsData = nsstring?.dataUsingEncoding(NSUTF8StringEncoding)//Nsstring的转换方式一样
//3:将NSData转换成对象(字典/数组)
let object = try! NSJSONSerialization.JSONObjectWithData(nsData!,options: .MutableContainers)//options参数似乎不影响输出结果.
//let object = try! NSJSONSerialization.JSONObjectWithData(nsData!,options: .MutableContainers) as! NSDictionary//如果是Json对象
//let object = try! NSJSONSerialization.JSONObjectWithData(nsData!,options: .MutableContainers) as! NSArray//如果是Json数组
//使用object,不同的对象,使用方法不一样
print("4:\(object)")
print("5:\(object["str4"]!)")
print("5:\(object["str4"]!!["ss3"])")
3:String和Nsstring的互转:
let nsstring:Nsstring = Nsstring(string: "This is a string")
let string:String = String(nsstring)
推荐阅读:
http://www.hangge.com/blog/cache/detail_647.html
http://www.hangge.com/blog/cache/detail_968.html
http://www.hangge.com/blog/cache/detail_798.html
源码: https://github.com/angcyo/JsonDemo
至此: 文章就结束了,如有疑问: QQ群 Android:274306954 Swift:399799363 欢迎您的加入.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。