首页 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脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++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°的超大角度调节,无论是天花板还是墙壁,都可以便利观影。

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

See all articles