導航:首頁 > 編程語言 > ios封裝json

ios封裝json

發布時間:2023-03-31 19:58:44

⑴ iOS - jsONEncoder和JSONDecoder介紹

Xcode 9, iOS 11 ,Swift 4出現 JSONEncoder 和 JSONDecoder 來實現JSON格式的編解碼

編碼數據為JSON對象

簡單使用

定義雜貨食品結構體,並遵守 Codable 協議

Codable 協議為可編解碼協議的類型別名

編碼例子

運行輸出

也可以設置輸出格式為 sortedKeys ,對keys進行排序

運行輸出

將跡圓JSON對象解碼成對應的實例數據

簡單使用

運行輸出

初始化內容

Employee包含Toy屬性,屬於嵌套類型(nested type)

運行輸出

camel case 表示駝峰形式(如:looksLikeThis)
snake case 表示下伍州賀劃線形式(如:looks_like_this_instead)

運行輸出

使用自定義key,這里使用gift替換favoriteToy

編解碼實現同上

運行輸出

去除嵌套類型,實現如下數據結構

修改 Employee 結構體,單獨實現編解碼協議

初始化內容同上

實現身層級JSON數據

可以看到name屬性在toy之內,toy屬性在gift之內,為了實現該數據結構,需要為gift屬性使用嵌套key容器(nested keyed containers)

運行上面測試內容輸出

實現日期的編解碼

簡單使用

運行輸出

實現編解碼子類

簡單使用

運行輸出

復雜類型的編解碼

簡單使腔派用

運行輸出

數組的編解碼

簡單使用

運行輸出

對象數據結構中擁有數組的編解碼

簡單使用

運行輸出

JSONEncoder
JSONDecoder
Encoding-and-decoding-in-swift

⑵ ios中將nsdata類型的數據放到字典里,在封裝成json可以嗎

首先需要確定你的json解析出來的是什麼類型的,下面提供的是NSData型的,如果解析出來是其他類型需要先轉為NSData: NSData *data; NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

⑶ ios怎麼創建一個json文件

json文件和plist文件類似,只是json多一步解析的操作; 現在常用的解析如下; NSString *path = [[NSBundle mainBundle] pathForResource:@"mJson" ofType:@"json"]; NSData *jsonData = [NSData dataWithContentsOfFile:path options:NSDataReadingMappedIfSafe error:nil]; NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options: error:nil]; 得到字典類型的數據後就可以使用了

⑷ iOS開源JSON解析庫MJExtension

iOS中JSON與NSObject互轉有兩種方式:1、iOS自帶類NSJSONSerialization 2、第三方開源庫SBJSON、JSONKit、MJExtension。項目中一直用MJExtension來進行閉畢基JSON與Model的互轉,非常方便、強大,接下來介紹一下這個輕量、強大的開源庫。

1、什麼是MJExtension?

MJExtension是一套字典和模型之間互相轉換的輕量級開源框架,github地址為: GitHub - CoderMJLee/MJExtension: A fast 。功能如下:

2、MJExtension架構

1)UML類圖

2)類介紹

3、MJExtension JSON轉Model流程圖

4、MJExtension用法舉例

關於用法詳情請見: GitHub - CoderMJLee/MJExtension: A fast 。我這里只介紹兩數族種常用的用法,JSON轉Model,JSON轉Model數組轎謹

⑸ ios中怎樣用json

可以盯飢使用NSDictionary中的鍵值對來拼接Json數據,非常方便,也可以進行嵌套,直接上代碼

//開始拼接Json字元串
NSDictionary *dataDictionary= [NSDictionary dictionaryWithObjectsAndKeys:@"mac",@"mac",
@"畢則鋒game",@"game",
@"devicetoken",@"devicetoken",
@"device",@"device",
@"gv",@"gv",
@"lang",@"lang",
@"os",@"os",nil];
NSDictionary *parmDictionary= [NSDictionary dictionaryWithObjectsAndKeys:@"getSession",@"act",
dataDictionary,@"data",nil];
NSDictionary *jsonDictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"pv",@"pv",
parmDictionary,@"param",nil];
SBJsonWriter *writer = [[SBJsonWriter alloc] init];

NSString *jasonString = [writer stringWithObject:jsonDictionary];
NSLog(@"手晌%@",jasonString);

⑹ ios開發怎麼向工程中添加json文件

JSON 一般是從網路介面中請求的一段數據吧.首先你要向伺服器發送一個請求,得到一段JSON,然後解析一下就行了.用到ASIHTTPRequest和SBJSON兩個第三方的開源類庫.
NSURL * url = [NSURL URLWithString:[urlString :NSUTF8StringEncoding]];

sendRequest = [ASIHTTPRequest requestWithURL:url];

[sendRequest setTimeOutSeconds:30];

[sendRequest setDelegate: self];

[sendRequest startAsynchronous];

- (void)requestFinished:(ASIHTTPRequest *)request

{

NSString *responseString = [request responseString];

if (responseString==nil || [responseString JSONValue] == nil) {

return;

}

NSDictionary *responseDict = [responseString JSONValue];

int result = [[responseDict objectForKey:@"status"] intValue];

if (result == 1) {

NSArray *location = [responseDict objectForKey:@"locations"];

...............................

}

⑺ 怎麼生成和解析iOS開發JSON格式數據

導語:JSON作為數據包格式傳輸的時候具有更高的效率,這是因為JSON不像XML那樣需要有嚴格的閉合標簽,這就讓有效數據量與總數據包比大大提升,從而減少同等數據流量的情況下,網路的傳輸壓力。JSON 可以將 JavaScript 對象中表示的一組數據轉換為字元串,然後就可以在函數之間輕松地傳遞這個字元串,或者在非同步應用程序中將字元串從 Web 客戶機傳遞給伺服器端程序。這個字元串看起來有點兒古怪,但是JavaScript很容易解釋它,而且 JSON 可以表示比"名稱 / 值對"更復雜的結構。例如,可以表示數組和復雜的對象,而不僅僅是鍵和值的簡單列表。

怎麼生成和解析iOS開發JSON格式數據?

一、如何生成JSON格式的'數據?

1、利用字典NSDictionary轉換為鍵/值格式的數據。

// 如果數組或者字典中存儲了 NSString, NSNumber, NSArray, NSDictionary, or NSNull 之外的其他對象,就不能直接保存成文件了.也不能序列化成 JSON 數據.

NSDictionary *dict = @{@"name" : @"me", @"do" : @"something", @"with" : @"her", @"address" : @"home"};

// 1.判斷當前對象是否能夠轉換成JSON數據.

// YES if obj can be converted to JSON data, otherwise NO

BOOL isYes = [NSJSONSerialization isValidJSONObject:dict];

if (isYes) {

NSLog(@"可以轉換");

/* JSON data for obj, or nil if an internal error occurs. The resulting data is a encoded in UTF-8.

*/

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];

/*

Writes the bytes in the receiver to the file specified by a given path.

YES if the operation succeeds, otherwise NO

*/

// 將JSON數據寫成文件

// 文件添加後綴名: 告訴別人當前文件的類型.

// 注意: AFN是通過文件類型來確定數據類型的!如果不添加類型,有可能識別不了! 自己最好添加文件類型.

[jsonData writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/dict.json" atomically:YES];

NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

} else {

NSLog(@"JSON數據生成失敗,請檢查數據格式");

}

2、通過JSON序列化可以轉換數組,但轉換結果不是標准化的JSON格式。

NSArray *array = @[@"qn", @18, @"ya", @"wj"];

BOOL isYes = [NSJSONSerialization isValidJSONObject:array];

if (isYes) {

NSLog(@"可以轉換");

NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

[data writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/base" atomically:YES];

} else {

NSLog(@"JSON數據生成失敗,請檢查數據格式");

}

二、如何解析JSON格式的數據?

1、使用TouchJSon解析方法:(需導入包:#import "TouchJson/JSON/CJSONDeserializer.h")

//使用TouchJson來解析北京的天氣

//獲取API介面

NSURL *url = [NSURL URLWithString:@"http://m.weather.com.cn/data/101010100.html"];

//定義一個NSError對象,用於捕獲錯誤信息

NSError *error;

NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

NSLog(@"jsonString--->%@",jsonString);

//將解析得到的內容存放字典中,編碼格式為UTF8,防止取值的時候發生亂碼

NSDictionary *rootDic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:&error];

//因為返回的Json文件有兩層,去第二層內容放到字典中去

NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];

NSLog(@"weatherInfo--->%@",weatherInfo);

//取值列印

NSLog(@"%@",[NSString stringWithFormat:@"今天是 %@ %@ %@ 的天氣狀況是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);

2、使用SBJson解析方法:(需導入包:#import "SBJson/SBJson.h")

//使用SBJson解析北京的天氣

NSURL *url = [NSURL URLWithString:@"http://www.weather.com.cn/adat/sk/101010100.html"];

NSError *error = nil;

NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

SBJsonParser *parser = [[SBJsonParser alloc] init];

NSDictionary *rootDic = [parser objectWithString:jsonString error:&error];

NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];

NSLog(@"%@", [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天氣狀況是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);

3、使用IOS5自帶解析類NSJSONSerialization方法解析:(無需導入包,IOS5支持,低版本IOS不支持)

// 從中國天氣預報網請求數據

NSURL *url = [ NSURL URLWithString:@"http://www.weather.com.cn/adat/sk/101010100.html"];

// 創建請求

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

// 在網路完成的 Block 回調中,要增加錯誤機制.

// 失敗機制處理: 錯誤的狀態碼!

// 最簡單的錯誤處理機制:

if (data && !error) {

// JSON格式轉換成字典,IOS5中自帶解析類NSJSONSerialization從response中解析出數據放到字典中

id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

NSDictionary *dict = obj[@"weatherinfo"];

NSLog(@"%@---%@", dict, dict[@"city"]);

}

}] resume];

4、使用JSONKit的解析方法:(需導入包:#import "JSONKit/JSONKit.h")

//如果json是“單層”的,即value都是字元串、數字,可以使用objectFromJSONString

NSString *json1 = @"{"a":123, "b":"abc"}";

NSLog(@"json1:%@",json1);

NSDictionary *data1 = [json1 objectFromJSONString];

NSLog(@"json1.a:%@",[data1 objectForKey:@"a"]);

NSLog(@"json1.b:%@",[data1 objectForKey:@"b"]);

//如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能會報錯(測試結果表明:使用由網路或得到的php/json_encode生成的json時會報錯,但使用NSString定義的json字元串時,解析成功),最好使用:

NSString *json2 = @"{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"張三", "age":"32"}}";

NSLog(@"json2:%@", json2);

NSDictionary *data2 = [json2 :JKParseOptionLooseUnicode];

NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);

NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);

⑻ ios 怎麼把參數包裝成json

方法/步驟

為了驗證我們的數據的轉換,我們這里新建一個項目來演示。名字就隨便取一個好了,但是在我們做項目的時候,名字還是要規范一點的好,這樣也方便我們後期通過項目名稱就能知道我們這個項目里邊實現了什麼功能,然後就可以直接從這個項目來取我們需要的東西。

現在我們開始編寫把dictionary轉化為json的方法,這里我就直接寫在新建一個項目的時候的默認的控制器ViewController的.m文件里了。大家可以在需要的地方編寫,有必要的話,也可以單獨寫成一個分類,看個人愛好。

這里的dic是這里用來測試的數據,我用的是一個dictionary來測試,當然了,如果不是dictionary而是array等,也是可以的,方法都是一樣的。這里我沒有對error做處理,如果擔心轉換的時候出現錯誤,也可以對其做一定的處理。

現在我們通過
NSLog(@"jsonString:%@",jsonString);
來列印看看結果是不是我們要的JSON格式。
點擊左上角的三角符號,或者command+r 來運行我們的項目。看到結果如下,正式我們需要的樣子。

我們看到上面列印出來的json是已經被格式化過的了,但是有時候我們需要往伺服器傳送的參數的格式要求是非常嚴格的,要求就是原始的json,不需要格式化,也就是一行。這個時候我們只需要修改NSJSONWritingPrettyPrinted就可以了,如下圖所示:

6
現在我們再次列印出來看看,點擊左上角的三角符號,或者command+r 來運行我們的項目。現在我們可以看到,json就是在一行了。其實有時候就是對這些數據的細節處理很煩人,看似簡單,有時候沒有找到問題所在就會讓你頭疼好久。

⑼ ios開發,要獲取一個json數據量很大,上千條,怎麼處理

分頁請求 閑自己封裝麻煩可以使用AFNetworking+MJRefresh第三方類庫, 前者神舉解決各種請求問題, 後者提供瞎前UIScrollView及其派生VIew的下拉刷新(滑到底也游神碧可載入請求新數據, 以及各種DIY) 有興趣還可以配合使用 MVVM+ReactiveCocoa, 分離邏輯層

⑽ ios 怎麼xcode製作json格式文件

1. 如何下載ios7模擬器
點擊xcode,選擇「Preferences」,選擇「downloads」,就可以看見IOS 7.1,不過下載有點慢。

2. 如何快速下載呢

進入目錄/Users//Library/Caches/com.apple.dt.Xcode/Downloads 將.dvtdownloadableindex 類似文件重命名成.plist後綴文件。

3.安裝完ios,如何使xcode使用

ios安裝的目錄:/Users/username/Library/Application Support/iPhone Simulator
目錄位置都一樣,都是在Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs裡面

然後重啟Xcode應該就可以了。

閱讀全文

與ios封裝json相關的資料

熱點內容
ansyswin10兼容性 瀏覽:595
下載日本電影的軟體 瀏覽:550
國產網站推薦 瀏覽:698
交換的一天女主介紹 瀏覽:219
主角被戴綠帽子的玄幻小說 瀏覽:677
法國大尺度電影1003法國大尺度電影 瀏覽:587
java用ftp做數據傳輸方案 瀏覽:752
手機數據如何挑選 瀏覽:33
途牛大數據 瀏覽:775
免費觀看電影電視劇的網站推薦 瀏覽:310
u盤誤刪文件恢復免費軟體免費版 瀏覽:496
主角能來回穿越的小說 瀏覽:212
linuxphpa 瀏覽:70
西域都護觀後感 瀏覽:698
屍香完整版在線免費觀看 瀏覽:63
小電影自拍 瀏覽:424
哪裡有開源文件管理器 瀏覽:502
韓國女神騎馬被擠壓是什麼電影 瀏覽:85
好看的台灣女同電影 瀏覽:696
我晚上看了電影用英語怎麼說 瀏覽:512

友情鏈接