JSON

JSON相关的,数据彼此间的转化进行了简单地封装,源码如下,支持arc与非arc

YXJSON.h + YXJSON.m

//
//  YXJSON.h
//
//  JSONString 与 JSONData 与 字典或者数组互相转化
//
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#import <Foundation/Foundation.h>@interface YXJSON : NSObject/**将字典或者数组转换为JSON格式字符串@return JSON格式字符串*/
+ (NSString *)JSONStringWithDictionaryOrArray:(id)dictionaryOrArray;/**将字典或者数组转换为JSON的Data@return JSON的Data*/
+ (NSData *)JSONSDataWithDictionaryOrArray:(id)dictionaryOrArray;/**将JSON格式字符串转换为字典或者数组@return 字典或者数组*/
+ (id)dictionaryOrArrayWithJSONSString:(NSString *)jsonString;/**将JSON的Data转换为字典或者数组@return 字典或者数组*/
+ (id)dictionaryOrArrayWithJSONSData:(NSData *)jsonData;@end

//
//  YXJSON.m
//
//  JSONString 与 JSONData 与 字典或者数组互相转化
//
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#if __has_feature(objc_arc)
#define YX_release(obj)
#define YX_autorelease(obj)
#else
#define YX_release(obj)      [obj release]
#define YX_autorelease(obj)  [obj autorelease]
#endif#import "YXJSON.h"@implementation YXJSON+ (NSString *)JSONStringWithDictionaryOrArray:(id)dictionaryOrArray
{if (dictionaryOrArray == nil){return nil;}//options: Pass 0 if you don't care about the readability of the generated stringNSData *data = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayoptions:NSJSONWritingPrettyPrintederror:nil];if (data == nil){return nil;}NSString *string = [[NSString alloc] initWithData:dataencoding:NSUTF8StringEncoding];YX_autorelease(string);return string;
}+ (NSData *)JSONSDataWithDictionaryOrArray:(id)dictionaryOrArray
{if (dictionaryOrArray == nil){return nil;}//options: Pass 0 if you don't care about the readability of the generated stringNSData *data = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayoptions:NSJSONWritingPrettyPrintederror:nil];return data;
}+ (id)dictionaryOrArrayWithJSONSString:(NSString *)jsonString
{if (jsonString == nil){return nil;}NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];return [NSJSONSerialization JSONObjectWithData:jsonDataoptions:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainerserror:nil];
}+ (id)dictionaryOrArrayWithJSONSData:(NSData *)jsonData
{if (jsonData == nil){return nil;}return [NSJSONSerialization JSONObjectWithData:jsonDataoptions:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainerserror:nil];
}@end

没有将其单独的封装到 NSString NSData NSArray NSDictionary 相关类目中,实际上用类目的方式使用更加方便,有需求可以自己弄,但文件多较为繁琐,本人不习惯.

转载于:https://www.cnblogs.com/YouXianMing/p/3620515.html

JSONString 与 JSONData 与字典或者数组互相转化相关推荐

  1. Swift 字典转数组

    Swift 字典转数组 1.Swift 类型的字典(Dictionary) let dic = ["name":"Tom","gender" ...

  2. Go Little Book - 第三章 - 字典 ,数组和切片

    2019独角兽企业重金招聘Python工程师标准>>> 第三章 - 字典 ,数组和切片(Chapter 3 - Maps, Arrays and Slices) So far we' ...

  3. iOS 第五期考核题(字典与数组嵌套,字典的排序/删除)

    1 /** 2 * 第1题 请将如下数据存储成字典,并将字典内容以字符串形式输出,输出:"XXX,年龄XXX岁,职业XXX"(将XXX替换为相应的数据). 3 */ 4 5 NSS ...

  4. 字典存入数组,字典删除,班级,年龄同时排序

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  5. OC字典存入数组,输出数组中数据,并且删除小明一项,然后进行排序、现根据班级排序,班级相同的用年龄进行排序...

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  6. linux shell 字典,shell数组与字典总结

    [TOC] > shell里面也有数组和所谓的字典,数组分为索引数组和关联数组(关联数组也就是在其他语言里面的字典,在数组和字典的操作方式基本一致). # 一. 数组 ## 1.1 创建数组 - ...

  7. python字典键值对转化为相应的变量名和变量值

    将python字典键值对转化为相应的变量名和变量值可以使用以下方法: globals().update({"name":"value"}) locals().u ...

  8. 输出英文字母java数组_JAVA语言之通过生成随机数组来转化为字母进行输出的类...

    本文主要向大家介绍了JAVA语言之通过生成随机数组来转化为字母进行输出的类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 今天又写了一个通过生成随机数组来转化为字母进行输出的类,但是 ...

  9. 一个字典树问题--电话号码转化问题(POJ 1002 487-3279)

    字典树,又称为单词查找树,Trie树.是一种用于快速检索多叉树的结构.典型应用于统计,排序和保存大量字符串.利用字符串的前缀来减少存储空间,减少无谓的比较,提高查询效率. 字典树根节点不包含任何数据, ...

  10. js char数组int数组互相转化

    js char数组int数组互相转化 需求:将 ['1','2','3'] 转为 [1,2,3] 实现: 方法一: ['1','2','3'].map(Number) 方法二: ['1','2','3 ...

最新文章

  1. Python发展迅猛,如何在Python热中脱颖而出了?
  2. 【文本分类】基于BERT预训练模型的灾害推文分类方法、基于BERT和RNN的新闻文本分类对比
  3. 数据库历险记(二) | Redis 和 Mecached 到底哪个好?
  4. Python瓦匠 —— 正则表达式(五)
  5. Vue项目中如何设置动态的TDK
  6. mysql链路跟踪工具_EasySwoole利用链路追踪组件制作甩锅工具
  7. 获取数据 - 下载附件解压附件 - Python代码
  8. web.xml配置文件详解
  9. C#中扩展StringBuilder支持链式方法
  10. 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
  11. title()、upper()、lower()的用法
  12. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作3D 立体图片动画效果~~适合初学者~超简单~ |前端开发|IT软件
  13. 彻底格式化系统启动U盘(基于win10)
  14. 前端改好,验证码显示不出来!!
  15. 普通计算机硬件cpu,cpu怎么看型号 教你怎么看电脑cpu型号(软件+硬件)
  16. python 下载公众号文章_最便捷的微信公众号文章下载器——基于Python爬虫微信文章...
  17. Mysql中索引相关问题
  18. 天池比赛——新闻文本分类比赛(零基础入门NLP)
  19. 判断ios系统、qq浏览器,iosqq内置浏览器,微信内置浏览器
  20. 【STM32】PWM输出原理

热门文章

  1. (4.10)mysql备份还原——利用binlog+全备恢复误删表【不推荐使用】
  2. ELK 架构之 Elasticsearch 和 Kibana 安装配置
  3. JavaScript(第二十二天)【动态加载js和css】
  4. 难道我真的只是你生命中的过客?
  5. 手机客户端应用功能测试方法总结
  6. BZOJ3571 [Hnoi2014]画框 【分治 + KM算法】
  7. 一个前端妹子的悲欢编程之路
  8. 自定义验证之整数(包括0和负数)
  9. HTML- 锚点实例
  10. SQL 中GROUP BY 、ROLLUP、CUBE 关系和区别