NSJSONSerliazition文档翻译和使用
来源:互联网 发布:淘宝女装退货率太高了 编辑:程序博客网 时间:2024/05/24 02:12
JSONSerialization文档
文档链接:JSONSerialization
类描述:
你用这个类去解析JSON为基本对象,或者将基本对象转化为JSON
一个需要被解析为JSON数据的对子昂必须具有一下几个特点:
1. 最顶层对象为NSArray或者NSDictionary。
2. 所有对象应该是NSStrng.NSNumber,NSArray,NSDictionary,或者NSNull的实例。
其他规则可能适用。调用isValidJSONObject(_:)或尝试转换的方法来判断一个给定的对象可以转换为JSON数据
注意:线程安全!
在iOS7及之后或者macOS10.9及之后NSJSONSerliazition是线程安全的。
内嵌类型
JSONSerialization.WritingOptions
Options for writing JSON data.//写JSON数据的方式
JSONSerialization.ReadingOptions
Options used when creating Foundation objects from JSON data//读JSON数据为基本对象的方式—see jsonObject(with:options:)
and jsonObject(with:options:)
.
解析JSON数据为基本类型(Swift)
1.通过含json data 的数据解析。
//参数:data:含JSON的数据
//参数:JSONSerialization.ReadinOptions 有三种类型mutableContainers(返回数组或者字典可变对象 )mutableLeave(返回可变数组) allowfragment(允许最顶层不是NSArray和NSDcitionary)
class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any
2.通过InputStream 解析(常常用于网络请求的解析)
//参数:InputStream 输入流
class func jsonObject(with: InputStream, options: JSONSerialization.ReadingOptions = []) throws -> Any
返回值:一个基本对象,如果解析失败则返回nil。
将基本对象转化为JSON数据
1.通过基本对象转为为JSON数据
//option参数只有:prettyPrinted
class func data(withJSONObject: Any, options: JSONSerialization.WritingOptions = [])-> Data
返回值:返回json数据(Data/NSData),失败则返回nil;结果数据是使用UTF-8编码
2.通过输出流转化为JSON数据
class func writeJSONObject(Any, to: OutputStream, options: JSONSerialization.WritingOptions = [], error: NSErrorPointer)->Int
返回值:写入流中的字节多少(Int),如果发生错误返回0;
检查是否该对象可以转化为JSON数据返回BOOLclass func isValidJSONObject(Any)->BOOL
NSJSONSerialisation的使用
使用JSONSerialisation可以将网路请求返回的json解析为基本对象,反之,也可以将上传数据序列化为json数据(NSData)上传。
可以在字典与数组中轻松转化。
//解析json数据(NSData为网络请求数据)转化为字典。
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
//将对象转为json数据
NSData *jsonData = [NSJSONSerialization data WithJSONObject:info options:0 error:nil];
- NSJSONSerliazition文档翻译和使用
- 关于dnsmasq的使用配置和文档翻译
- Umbraco 官方技术文档 翻译 十、 插入媒体 和 使用样式表和javascript
- flask使用文档<一> ----------每天翻译一点点
- require.js text 插件使用文档翻译
- detours使用:detours3.0文档翻译
- apple官方文档翻译:使用NSURLSession(一)
- apple官方文档翻译:使用NSURLSession(二)
- RPi.GPIO 官方使用文档翻译
- Android学习之ScrollView使用文档翻译
- Android学习之Snackbar使用文档翻译
- 使用Sphinx翻译LLVM的中文文档
- XMPP在iOS上使用-翻译文档
- 【TRUNCATE】使用之MySQL官方文档翻译
- 【GROUP_CONCAT】使用之MySQL官方文档翻译
- Angular-CLI工具使用文档翻译
- 【CONCAT】使用之MySQL官方文档翻译
- Python3.2官方文档翻译--使用二进制数据记录布局和多线程
- PTA刷题--查验身份证
- Roman to Integer
- pullToRefreshListView去掉顶部和底部分割线方法
- Mac office 字体和字号显示问题
- 属性取值、赋值点与中括号操作符的区别
- NSJSONSerliazition文档翻译和使用
- 《大话数据结构》读书笔记(二)——线性表
- Java集合之ArrayList总结
- Intellij Idea 2016.3 SVN 提交 No changes detected
- 学习笔记——关于 while(cin>>word){} 如何停止的问题
- Activity生命周期
- jxl 导出excel
- tomcat 配置域名
- Tomcat的目录结构