ios轉json(ios轉json字元串)

本文目錄一覽:

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字元串

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

ios 怎麼xcode製作json格式文件

創建工程後(這個就不說了吧,用過xcode的都清楚),算了–打開xcode後command+shift+n創建工程,工程名字自己起.

command + n 創建文件,我選的是 Swift File

回車自己起名字,然後在回車

4. 然後它會問你選哪個,當然選Use.json了,這不就完了嗎

怎麼生成和解析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:@””];

//定義一個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:@””];

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:@””];

// 創建請求

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字元串時,解析成功),最好使用objectFromJSONStringWithParseOptions:

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

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

NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];

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

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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247170.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:19
下一篇 2024-12-12 13:19

相關推薦

  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字元串轉化為浮點數

    本文將介紹在Python中將字元串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字元串轉化為…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分散式文件系統(HDFS)。HDFS是一個可擴展性高的分散式…

    編程 2025-04-29
  • Python如何將字元串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字元串的處理提供了很多便捷的方式。如何將字元串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字元…

    編程 2025-04-29
  • Python int轉二進位字元串

    本文將從以下幾個方面對Python中將int類型轉換為二進位字元串進行詳細闡述: 一、int類型和二進位字元串的定義 在Python中,int類型表示整數,二進位字元串則是由0和1…

    編程 2025-04-29
  • 用title和capitalize美觀處理Python字元串

    在Python中,字元串是最常用的數據類型之一。對字元串的美觀處理是我們在實際開發中經常需要的任務之一。Python內置了一些方法,如title和capitalize,可以幫助我們…

    編程 2025-04-28
  • Python 提取字元串中的電話號碼

    Python 是一種高級的、面向對象的編程語言,它具有簡單易學、開發迅速、代碼簡潔等特點,廣泛應用於 Web 開發、數據科學、人工智慧等領域。在 Python 中,提取字元串中的電…

    編程 2025-04-28

發表回復

登錄後才能評論