1. 什麼是json?
1). json是一種輕量級的資料格式,一般用於資料互動.
3). json的格式很像oc中的字典和陣列
標準json格式的注意: key必須用雙引號
2. 序列化 和 反序列化
序列化: oc物件 ---> json/xml
反序列化: json/xml ---> oc物件
轉換對照表
josn oc
{} @{}
@ "" @""
false nsnumber 0
true nsnumber 1
null nsnull為空
json解析方案:
a.第三方框架 jsonkit\sbjson\touchjson
b.蘋果原生(
nsjsonserialization
)效能最好
nsjsonserialization 常見方法:
json資料 —> oc物件
+ (id)jsonobjectwithdata:(nsdata *)data options:(nsjsonreadingoptions)opt error:(nserror **)error;
oc物件 —> json資料
+ (nsdata *)datawithjsonobject:(id)obj options:(nsjsonwritingoptions)opt error:(nserror **)error;
oc物件是否可轉
注意: 以下** 包括:
1. 序列化(oc物件 ---> json資料)
注意點: 並不是所有的oc物件都能轉為json(nsstring型別就不行)
序列化的要求:
-最外層必須是 nsarray or nsdictionary
-所有的元素必須是 nsstring, nsnumber, nsarray, nsdictionary, or nsnull
- 字典中所有的key都必須是 nsstring型別的
- nsnumbers不能死無窮大
如果不滿足以上要求: 為了防止程式崩潰, 需要做乙個oc物件是否能轉為json的判斷.
// 判斷oc物件是否能轉
bool isvalid = [nsjsonserialization isvalidjsonobject:dictm];
if (!isvalid)
2. 反序列化(json資料 ---> oc物件)注意點: 如果解析 非字典/陣列的資料, 只能使用
nsjsonreadingallowfragments
這個列舉
kniloptions == 0
3. json 和 oc物件的關係
4. plist資料 轉為 json資料
//
// viewcontroller.m
// 05掌握-json解析
//// created by 朝陽 on 2017/12/7.
//#import "viewcontroller.h"
@inte***ce viewcontroller ()
@end
@implementation viewcontroller
- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event
// 序列化(oc物件 --> json)
- (void)octojson
; nsarray *arraym = @[@"44",@"123"];
// 注意: 並不是所有的oc物件都能轉為json(nsstring型別就不行)
nsstring *strm = @"guizhaoyang";
/*- 最外層必須是 nsarray or nsdictionary
- 所有的元素必須是 nsstring, nsnumber, nsarray, nsdictionary, or nsnull
- 字典中所有的key都必須是 nsstring型別的
- nsnumbers不能死無窮大
*/// 判斷oc物件是否能轉
bool isvalid = [nsjsonserialization isvalidjsonobject:dictm];
if (!isvalid)
/*param1:要轉換的oc物件
param2: 排版,美觀 nsjsonwritingprettyprinted
param3:錯誤資訊
*/nsdata *data = [nsjsonserialization datawithjsonobject:dictm options:nsjsonwritingprettyprinted error:nil];
nslog(@"%@",[[nsstring alloc]initwithdata:data encoding:nsutf8stringencoding]);
}// 反序列化(json --> oc物件)
- (void)jsontoobject];}
// json 和 oc物件的關係
- (void)jsonwithobject
"; //nsstring *strm = @"[\"error\",\"使用者名稱不存在\"]";
//nsstring *strm = @"\"wendingding\"";
//nsstring *strm = @"false";
//nsstring *strm = @"true";
nsstring *strm = @"null";
id obj = [nsjsonserialization jsonobjectwithdata:[strm datausingencoding:nsutf8stringencoding] options:nsjsonreadingallowfragments error:0];
nslog(@"%@---%@",[obj class],obj);
/*josn oc
{} @{}
@"" @""
false nsnumber 0
true nsnumber 1
null nsnull為空
*///nil
[nsnull null]; //該方法獲得的是乙個單粒,表示為空,可以用在字典或者是陣列中
}// plist轉為json資料
- (void)plisttojson
@end
iOS開發網路篇 JSON介紹
2.傳送請求給伺服器 帶上賬號和密碼 新增乙個遮罩,禁止使用者操作 mbprogresshud showmessage 正在努力載入中.1.設定請求路徑 nsstring urlstr nsstring stringwithformat self.username.text,self.pwd.tex...
iOS開發網路篇 JSON介紹
一 什麼是json json是一種輕量級的資料格式,一般用於資料互動 json的格式很像oc中的字典和陣列 標準json格式的注意點 key必須用雙引號 要想從json中挖掘出具體資料,得對json進行解析。即把json 轉換為 oc資料型別 二 json oc 轉換對照表 對照關係 三 json解...
iOS開發網路篇 JSON介紹
2019獨角獸企業重金招聘python工程師標準 一 什麼是json json是一種輕量級的資料格式,一般用於資料互動 json的格式很像oc中的字典和陣列 標準json格式的注意點 key必須用雙引號 要想從json中挖掘出具體資料,得對json進行解析。即把json 轉換為 oc資料型別 二 j...