iOS開發網路篇 一一 JSON解析

2021-08-13 16:39:35 字數 3534 閱讀 8476

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...