首頁 php教程 php手册 ios json(将字典或者数组转化为JSON串)

ios json(将字典或者数组转化为JSON串)

Jun 06, 2016 pm 07:38 PM
ios json

一、将NSDictionary或NSArray转化为JSON串 // 将字典或者数组转化为JSON串 - (NSData *)toJSONData:(id)theData{ NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData options:NSJSONWritingPrettyPrinted error: if

一、将NSDictionary或NSArray转化为JSON串

// 将字典或者数组转化为JSON串

- (NSData *)toJSONData:(id)theData{



NSError *error = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData

options:NSJSONWritingPrettyPrinted

error:&error];



if ([jsonData length] > 0 && error == nil){

        return jsonData;

    }else{

        return nil;

    }

}

使用这个方法的返回,我们就可以得到想要的JSON串

NSString *jsonString = [[NSString alloc] initWithData:jsonData

                                                 encoding:NSUTF8StringEncoding];


二、将JSON串转化为NSDictionary或NSArray

将NSString转化为NSData

[jsonString dataUsingEncoding:NSASCIIStringEncoding];



// 将JSON串转化为字典或者数组

- (id)toArrayOrNSDictionary:(NSData *)jsonData{

    NSError *error = nil;

    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData

                                                    options:NSJSONReadingAllowFragments

                                                      error:&error];

    

    if (jsonObject != nil && error == nil){

        return jsonObject;

    }else{

        // 解析错误

         return nil;

    }


}

三、将JSON串与NSArray和NSDictionary的操作进行封装

当然,也有很多时候,我们将这些操作,分别定义在NSObject和NSString的一个分类中

直接贴:

1.将NSString转化为NSArray或者NSDictionary

#import "NSString+JSONCategories.h"


@implementation NSString(JSONCategories)


-(id)JSONValue;

{

    NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];

    __autoreleasing NSError* error = nil;

    id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    if (error != nil) return nil;

    return result;

}

@end


2.将NSArray或者NSDictionary转化为NSString

#import "NSObject+JSONCategories.h"


@implementation NSObject (JSONCategories)


-(NSData*)JSONString;

{

    NSError* error = nil;

    id result = [NSJSONSerialization dataWithJSONObject:self

                                                options:kNilOptions error:&error];

    if (error != nil) return nil;

    return result;

}

@end
 一、将NSDictionary或NSArray转化为JSON串

// 将字典或者数组转化为JSON串

- (NSData *)toJSONData:(id)theData{

    

    NSError *error = nil;

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData

                                                      options:NSJSONWritingPrettyPrinted

                                                         error:&error];

    

    if ([jsonData length] > 0 && error == nil){

        return jsonData;

    }else{

        return nil;

    }

}

使用这个方法的返回,我们就可以得到想要的JSON串

NSString *jsonString = [[NSString alloc] initWithData:jsonData

                                                 encoding:NSUTF8StringEncoding];


二、将JSON串转化为NSDictionary或NSArray

将NSString转化为NSData

[jsonString dataUsingEncoding:NSASCIIStringEncoding];



// 将JSON串转化为字典或者数组

- (id)toArrayOrNSDictionary:(NSData *)jsonData{

    NSError *error = nil;

    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData

                                                    options:NSJSONReadingAllowFragments

                                                      error:&error];

    

    if (jsonObject != nil && error == nil){

        return jsonObject;

    }else{

        // 解析错误

         return nil;

    }


}

三、将JSON串与NSArray和NSDictionary的操作进行封装

当然,也有很多时候,我们将这些操作,分别定义在NSObject和NSString的一个分类中

直接贴:

1.将NSString转化为NSArray或者NSDictionary

#import "NSString+JSONCategories.h"


@implementation NSString(JSONCategories)


-(id)JSONValue;

{

    NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];

    __autoreleasing NSError* error = nil;

    id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    if (error != nil) return nil;

    return result;

}

@end


2.将NSArray或者NSDictionary转化为NSString

#import "NSObject+JSONCategories.h"


@implementation NSObject (JSONCategories)


-(NSData*)JSONString;

{

    NSError* error = nil;

    id result = [NSJSONSerialization dataWithJSONObject:self

                                                options:kNilOptions error:&error];

    if (error != nil) return nil;

    return result;

}

@end
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

蘋果iOS 18首版被曝Bug多到飛起:發熱嚴重 微信延遲 蘋果iOS 18首版被曝Bug多到飛起:發熱嚴重 微信延遲 Jun 13, 2024 pm 09:39 PM

一年一度的WWDC已經結束,iOS18無疑是大家關注的一大焦點。目前有許多iPhone用戶都搶先升級到了iOS18,但各種系統Bug讓人難受。有部落客表示,升級iOS18要謹慎,因為「Bug多到飛起」。部落客表示,如果你的iPhone是主力機,建議不要升級iOS18,因為第一版的Bug非常多。他也彙整了幾個目前遇到的系統Bug:1、切換圖示樣式卡頓,導致圖示不顯示2、手電筒示寬動畫經常遺失3、抖音App上傳不了影片4、微信訊息延遲10s左右推送5 、電話偶爾打不出去,顯示黑屏6、發熱嚴

蘋果重發 iOS / iPadOS 18 Beta 4 更新,版本號升至 22A5316k 蘋果重發 iOS / iPadOS 18 Beta 4 更新,版本號升至 22A5316k Jul 27, 2024 am 11:06 AM

感谢网友吉茵珂絲、xxx_x、番茄炒西红柿、Terrence、香辣鸡腿堡的线索投递!7月27日消息,苹果公司今天面向开发者,重新发布了iOS/iPadOS18Beta4更新,内部版本号从22A5316j升级到22A5316k,目前尚不清楚两个Beta4版本更新之间的区别。已经注册的开发者可以打开“设置”应用程序,进入“软件更新”部分,点击“测试版更新”选项,然后切换iOS18/iPadOS18开发者测试版设置来选择测试版。下载并安装测试版需要与开发者账户关联的AppleID。7月24日报道,iO

蘋果發布用於同態加密的開源 Swift 軟體包,已部署在 iOS 18 中 蘋果發布用於同態加密的開源 Swift 軟體包,已部署在 iOS 18 中 Jul 31, 2024 pm 01:10 PM

7月31日消息,蘋果昨天(7月30日)發布新聞稿,宣布推出新的開源Swift包(swift-homomorphic-encryption),用於在Swift程式語言中啟用同態加密。註:同態加密(HomomorphicEncryption,HE)是指滿足密文同態運算性質的加密演算法,即資料經過同態加密之後,對密文進行特定的計算,得到的密文計算結果在進行對應的同態解密後的明文等同於明文資料直接進行相同的計算,實現資料的「可算不可見」。同態加密技術可以計算加密數據,而且不會向操作過程洩漏底層的未加

更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite 更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite Aug 18, 2024 am 06:34 AM

更新:Saunders Tech 已將教學上傳到他的 YouTube 頻道(下面嵌入影片),解釋如何在歐盟境外的 iPad 上安裝 Fortnite 和 Epic Games Store。然而,該過程不僅需要特定的 iO 測試版

蘋果 iOS 18「無邊記」應用新功能:擴充 Scenes 功能、引入網格對齊 蘋果 iOS 18「無邊記」應用新功能:擴充 Scenes 功能、引入網格對齊 Jun 02, 2024 pm 05:05 PM

6月1日消息,科技媒體AppleInsider今天發布博文,表示蘋果將會在iOS18系統中,為「無邊記」(Freeform)應用程式擴充推出「Scenes」的全新導航功能,並新增物件對齊的新選項。 「無邊記」應用簡介先簡單介紹下「無邊記」應用,應用於2022年推出,目前已推出iOS、iPadOS、macOS15以及visionOS版本。蘋果官方介紹如下:「無邊記」是讓靈感變成現實的絕佳工具。在支援幾乎所有文件類型的靈活畫布上勾勒項目草圖、設計心情看板或開始腦力激盪。借助iCloud,所有看板

蘋果 iOS / iPadOS 18 開發者預覽版 Beta 4 發布:新增 CarPlay 桌布、梳理設定選項、增強相機控制 蘋果 iOS / iPadOS 18 開發者預覽版 Beta 4 發布:新增 CarPlay 桌布、梳理設定選項、增強相機控制 Jul 24, 2024 am 09:54 AM

感謝網友辣雞腿堡、軟媒新友2092483、手寫的從前、DingHao、小星_14、窩窩頭吃大口、非影Q、軟媒新友2168428、Slades、Aaron212、快樂小刺蝟、小伯爵、吃魚的小奶貓的線索投遞! 【點此直達升級教學】7月24日訊息,蘋果今日向iPhone和iPad用戶推送了iOS/​​iPadOS18開發者預覽版Beta4更新(內部版本號:22A5316j),這次更新距離上次發布隔了15天。 Carplay壁紙蘋果為CarPlay添加了壁紙,涵蓋淺色和深色兩種模式,其壁紙風格類似於iPhon

哈趣 K2 投影儀,讓奧運激情與夢想觸手可及 哈趣 K2 投影儀,讓奧運激情與夢想觸手可及 Jul 24, 2024 pm 01:34 PM

在剛結束的歐洲盃決賽中,你是否為自己支持的球隊瘋狂打call?在馬上到來的巴黎奧運中,你是否也期待能完美捕捉到各賽事的高光時刻?這其中,擁有一台優質的觀賽設備至關重要。哈趣K2投影機以其高性價比和出色的性能,當之無愧地成為觀賽良選。它不僅具備高亮度、清晰的畫質,還能提供沉浸式的觀影體驗,讓每一場比賽的精彩時刻都彷彿近在咫尺。這樣的設備,你是否已經心動了呢?它定能讓你在家中也能享受到奧運賽事的熱情與夢想。哈趣K2貼心最大的亮點就是它210°的超大角度調節,無論是天花板還是牆壁,都可以方便觀影。

蘋果 iPhone 16 預裝 Apple Intelligence 沒戲了 蘋果 iPhone 16 預裝 Apple Intelligence 沒戲了 Jul 30, 2024 pm 01:18 PM

根據業內人士MarkGurman的消息指出,蘋果的AppleIntelligence將會跳票至10月。也就是說將會在iOS18.1上首發推送。蘋果iPhone16預計9月發布,因此將不會預先安裝AppleIntelligence。 1.AppleIntelligenceAppleIntelligence是一套個人智慧化系統,採用強大的生成式模型,旨在為iPhone、iPad和Mac提供新功能,輔助使用者溝通、工作和表達。 2.自然語言理解AppleIntelligence內嵌的大模型具備對語言意義的深

See all articles