日常开发中常用的一个相互转换的方法;

直接创建对应的类,引用如下方法即可实现;

具体 code 如下:

声明:

#import <Foundation/Foundation.h>

@interface NSString (JSON)

- (id)jsonObject;

/** dic -> json*/
- (NSString *)dictionaryToJson:(NSDictionary *)dic; @end

实现:

#import "NSString+JSON.h"

extern void dictionaryFilterNullNode(NSMutableDictionary*);
extern void arrayFilterNullNode(NSMutableArray*); void inline dictionaryFilterNullNode(NSMutableDictionary *dic) {
NSMutableArray *deleteKeys = [NSMutableArray array];
[[dic allKeys] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
id value = [dic objectForKey:obj];
if ([value isKindOfClass:[NSNull class]]) {
[deleteKeys addObject:obj];
} else if([value isKindOfClass:[NSMutableArray class]]) {
arrayFilterNullNode(value);
} else if([value isKindOfClass:[NSMutableDictionary class]]) {
dictionaryFilterNullNode(value);
}
}];
[deleteKeys enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[dic removeObjectForKey:obj];
}];
deleteKeys;
} void inline arrayFilterNullNode(NSMutableArray *array) {
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[NSMutableDictionary class]]) {
dictionaryFilterNullNode(obj);
}
}];
} @implementation NSString (JSON)
- (id)jsonObject {
NSError *error = nil;
id result = [NSJSONSerialization JSONObjectWithData:[self dataUsingEncoding:NSUTF8StringEncoding]
options:NSJSONReadingMutableContainers
error:&error]; if (error || [NSJSONSerialization isValidJSONObject:result] == NO)
{
return self;
} if ([result isKindOfClass:[NSMutableArray class]]) {
arrayFilterNullNode(result); } else if([result isKindOfClass:[NSMutableDictionary class]]) {
dictionaryFilterNullNode(result); }else if ([result isKindOfClass:[NSNull class]]){
// result;
NSLog(@"----->%@",result);
return self;
} return result;
} //dic -> json
- (NSString *)dictionaryToJson:(NSDictionary *)dic {
NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic
options:NSJSONWritingPrettyPrinted
error:&error]; return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
} @end

  

NSDictionary+JSON - iOS 机票如下: NSDictionary+JSON - iOS

以上便是此次分享的内容,希望能对大家有所帮助!

NSString+JSON - iOS的更多相关文章

  1. NSDictionary+JSON - iOS

    日常开发中常用的一个相互转换的方法; 直接创建对应的类,引用如下方法即可实现; 具体 code 如下: 声明: #import <Foundation/Foundation.h> @int ...

  2. iOS NSDictionary <--> NSString(JSON) in Objc

    NSDictionary --> NSString + (NSString*)stringINJSONFormatForObject:(id)obj { NSData *jsonData = [ ...

  3. NSString json 车NSDictionary

    NSData *jsonContent = [[userInfo objectForKey:@"acme"] dataUsingEncoding:NSUTF8StringEncod ...

  4. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  5. iOS网络-02-数据解析(JSON与XML)

    数据交互格式 服务器返回给用户的数据,通常是以下两种方式: JSON XML JSON 一种轻量级的数据数据格式,体积比XML小,是服务器返回给移动端通常采用的格式 用使用JSON文件中的数据,需要对 ...

  6. iOS学习—JSON数据解析

      关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...

  7. iOS学习——JSON数据解析(十一)

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  8. iOS学习笔记(十一)——JSON数据解析

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  9. iOS 解析json串

    NSString *json = @"[{\"name\":\"a1\",\"items\":[{\"x1\" ...

随机推荐

  1. python学习(四)--POST请求

    from urllib import requestimport urllibimport re #网页版有道翻译是ajax的post请求. #浏览器请求地址http://fanyi.youdao.c ...

  2. C#学习笔记7

    1.重写GetHashCode方法注意点: (1)重写GetHashCode方法,也应重写Equals方法,否者编译器会警告. (2)相等的对象必须有相等的散列码(若a.Equals(b),则a.Ge ...

  3. dhtml

    网页换肤:<div> <button>red</button> <button>blue</button> <button>bl ...

  4. javascript实现数据结构:线索二叉树

    遍历二叉树是按一定的规则将树中的结点排列成一个线性序列,即是对非线性结构的线性化操作.如何找到遍历过程中动态得到的每个结点的直接前驱和直接后继(第一个和最后一个除外)?如何保存这些信息? 设一棵二叉树 ...

  5. 【阿里云产品公测】小白对OTS两点小建议

    作者:阿里云用户荷包蛋 我是大一的新生,作为一个爱技术爱学习爱折腾的熊孩子,我在暑假申请了ECS,学到了很多东西.现在阿里巴巴又开放了很多免费测试,我抱着学习和围观的心态申请了测试,其中有OTS这个高 ...

  6. SharePoint 2013 - REST Service

    0. SharePoint 2013使用_api来标识出 REST SERVICE,REST Service其实是 client.svc web service的一部分,但为了简化 REST URI的 ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...

  8. 简谈 Java 中的泛型通配符

    很好的一篇文章https://zhuanlan.zhihu.com/p/26681625

  9. file中mkdirs和mkdir的区别-文件上传

    mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下: new File("/tmp/one/two/three").mkdirs(); 执行后, 会建 ...

  10. SQL Server ->> 在SQL Server中创建ASSEMBLY

    首先要把数据库的TRUSTWORTHY属性改为ON ALTER DATABASE [MYDB] SET TRUSTWORTHY ON GO 接下来直接创建ASSEMBLY应该就没问题了.但是往往有可能 ...