博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化
阅读量:5377 次
发布时间:2019-06-15

本文共 1906 字,大约阅读时间需要 6 分钟。

在iOS  5 中,苹果引入了一个解析JSON串的
NSJSONSerialization类。
通过该类,我们可以完成JSON数据与
NSDictionary
NSArray之间的转化。
以前,我记得我用的是第三方的插件。但是,苹果出了这套解析后,效率也大大了超过了,所有的解析第三方类库。所以,推荐使用
NSJSONSerialization类来完成转化。

 

一、将NSDictionaryNSArray转化为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 allocinitWithData:jsonData

                                                 encoding:NSUTF8StringEncoding];

二、将
JSON串
转化为
NSDictionaryNSArray
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 != nilreturn 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:kNilOptionserror:&error];

    if (error != nilreturn nil;

    return result;

}

@end

转载自:http://blog.sina.com.cn/s/blog_7b9d64af0101ce92.html

 

转载于:https://www.cnblogs.com/yuanjunliang/articles/4717105.html

你可能感兴趣的文章
sqlserver2008 中使用MSXML2.ServerXMLHttp拼装soap调用webservice
查看>>
20170926日关于需求调研的一些理解,
查看>>
[HNOI2008]玩具装箱TOY
查看>>
ejabberd组成模块
查看>>
笔记本电脑插入耳机后无法使用解决办法
查看>>
全球最昂贵的10大科技产品
查看>>
Sql获取第一天、最后一天
查看>>
SQL中如何使用UPDATE语句进行联表更新(转)
查看>>
前端性能优化--图片懒加载(lazyload image)
查看>>
02.规划过程组表格-活动持续时间估算工作表
查看>>
关于cmp函数参数中的&符号
查看>>
Linq 多件拼接
查看>>
《构建之法》读后感
查看>>
Check odd faces of the selection object
查看>>
[Algorithm -- Dynamic Programming] Recursive Staircase Problem
查看>>
[Angular 2] Using ngrx/store and Reducers for Angular 2 Application State
查看>>
2. Add Two Numbers
查看>>
hdu 1556 Color the ball
查看>>
hdu 3790 最短路径问题
查看>>
uploadify v3.1{上传附件}
查看>>