iOS 數(shù)據(jù)交互模式
- 主要有兩種:json xml
一统捶、Json
-
什么是JSON
- JSON是一種輕量級的數(shù)據(jù)格式猛遍,一般用于數(shù)據(jù)交互
- 服務(wù)器返回給客戶端的數(shù)據(jù)制妄,一般都是JSON格式或者XML格式(文件下載除外)
-
JSON的格式很像OC中的字典和數(shù)組
- {"name" : "jack", "age" : 10}
- {"names" : ["jack", "rose", "jim"]}
- 標(biāo)準(zhǔn)JSON格式的注意點:key必須用雙引號
要想從JSON中挖掘出具體數(shù)據(jù),得對JSON進行解析
JSON 轉(zhuǎn)換為 OC數(shù)據(jù)類型
二统扳、json的解析方案
- 在iOS中贫橙,JSON的常見解析方案有4種
- 第三方框架:JSONKit贪婉、SBJson、TouchJSON(性能從左到右料皇,越差)
- 蘋果原生(自帶):
NSJSONSerialization
(性能最好)
-
NSJSONSerialization的常見方法
-
格式示例:
- JSON數(shù)據(jù)(NSData) -> OC對象(Foundation Object)
- {} -> NSDictionary @{}
- [] -> NSArray @[]
- "jack" -> NSString @"jack"
- 10 -> NSNumber @10
- 10.5 -> NSNumber @10.5
- true -> NSNumber @1
- false -> NSNumber @0
- null -> NSNull
- JSON數(shù)據(jù)(NSData) -> OC對象(Foundation Object)
JSON數(shù)據(jù)(NSData) -> OC對象(Foundation Object)
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
參數(shù) NSJSONReadingOptions
- NSJSONReadingMutableContainers = (1UL << 0)
- 創(chuàng)建出來的數(shù)組和字典就是可變
- NSJSONReadingMutableLeaves = (1UL << 1)
- 數(shù)組或者字典里面的字符串是可變的(暫時不太好用)
- NSJSONReadingAllowFragments
- 允許解析出來的對象不是字典或者數(shù)組谓松,比如直接是字符串或者NSNumber
- OC對象(Foundation Object)-> JSON數(shù)據(jù)(NSData)
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
三星压、Tips
-
格式化服務(wù)器返回的JSON數(shù)據(jù)
- 在線格式化:http://tool.oschina.net/codeformat/json
- 將服務(wù)器返回的字典或者數(shù)組寫成plist文件
-
一般 json 返回的數(shù)據(jù)要么是字典践剂,要么是數(shù)組,用第三方框架完成字典數(shù)組到模型的轉(zhuǎn)換娜膘。
-
字典轉(zhuǎn)模型框架
-
Mantle
- 所有模型都必須繼承自MTModel
-
JSONModel
- 所有模型都必須繼承自JSONModel
-
MJExtension
- 不需要強制繼承任何其他類
設(shè)計框架需要考慮的問題
- 侵入性
- 侵入性大就意味著很難離開這個框架
- 易用性
- 比如少量代碼實現(xiàn)N多功能
- 擴展性
- 很容易給這個框架增加新框架