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

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 string
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionaryOrArray
options:NSJSONWritingPrettyPrinted
error:nil]; if (data == nil)
{
return nil;
} NSString *string = [[NSString alloc] initWithData:data
encoding: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 string
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionaryOrArray
options:NSJSONWritingPrettyPrinted
error:nil];
return data;
} + (id)dictionaryOrArrayWithJSONSString:(NSString *)jsonString
{
if (jsonString == nil)
{
return nil;
} NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; return [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainers
error:nil];
} + (id)dictionaryOrArrayWithJSONSData:(NSData *)jsonData
{
if (jsonData == nil)
{
return nil;
} return [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainers
error:nil];
} @end
没有将其单独的封装到 NSString NSData NSArray NSDictionary 相关类目中,实际上用类目的方式使用更加方便,有需求可以自己弄,但文件多较为繁琐,本人不习惯.
JSONString 与 JSONData 与字典或者数组互相转化的更多相关文章
- Swift JSON字符串和字典以及数组的互转
1.JSONString转换为字典 // JSONString转换为字典 func getDictionaryFromJSONString(jsonString:String) ->NSDict ...
- iOS 字典或者数组和JSON串的转换
在和服务器交互过程中,会iOS 字典或者数组和JSON串的转换,具体互换如下: // 将字典或者数组转化为JSON串 + (NSData *)toJSONData:(id)theData { NSEr ...
- 使用JavaScriptSerializer序列化集合、字典、数组、DataTable为JSON字符串 分类: 前端 数据格式 JSON 2014-10-30 14:08 169人阅读 评论(0) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- IOS_FMDB有关字典、数组存储及获取问题
http://blog.csdn.net/betterbb/article/details/25984455 FMDB存储字典或数组时会变成字符串存入sqlite里,但如果不将其转换成json格式存储 ...
- iOS开发小技巧--字典和数组的中文输出
一.在解析json数据的时候,得到的集合对象或者数组对象在用%@打印的时候回出现类似乱码的情况.如图: 在iOS中打印字典或者数组对象,系统会默认调用字典对象和数组对象的descriptionWith ...
- 将字典或者数组转换成JSON数据或者字符串
将字典或者数组转换成JSON数据或者字符串 源码: NSDictionary+JSON.h 与 NSDictionary+JSON.m // // NSDictionary+JSON.h // Cat ...
- 使用 NSPropertyListSerialization 持久化字典与数组
NSPropertyListSerialization The NSPropertyListSerialization class provides methods that convert prop ...
- shell进阶篇之字典和数组结合应用案例
# 现在我们用字典结合数组来实现一个简单的远程管理机 远程管理机的需求:现在需要在一个管理机上实现下列两点内容: 1.需要可以实时查看现有项目运行状态 2.远程登陆任意一台机器 备注:现有的机器如下 ...
- python字典键值对转化为相应的变量名和变量值
将python字典键值对转化为相应的变量名和变量值可以使用以下方法: globals().update({"name":"value"}) locals().u ...
随机推荐
- Django和Mysql合用时,显示时间问题
这个以前没系统处理过,感觉前端页面显示正常,就OK. 但有的不重要的地方,显示有8小时错乱,也没有列入优先级处理. 昨天下细看了一些网上文档,找取了解决思路. 大致想法是:数据库里存+00:00时区的 ...
- GridView练习题
package com.example.wang.myapplication; import android.os.Bundle; import android.support.v7.app.AppC ...
- Android 中.aar文件生成方法与用法
https://i.cnblogs.com/EditPosts.aspx?opt=1 无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Ja ...
- MySQL5.6 Waiting for Commit Lock
mysql Bug#19843808 自动修复记录 MySQL5.6和Xtrabackup之间存在一个bug,这个bug在5.6.23中已经修复. Xtrabackup备份的时候执行flushs t ...
- Kafka(三)Kafka的高可用与生产消费过程解析
一 Kafka HA设计解析 1.1 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据 ...
- LoadRunner FAQ
LoadRunner FAQ web_concurrent_start和web_concurrent_end web_concurrent_start 语法: int web_concurrent_s ...
- Django实战(3):Django也可以有scaffold
rails有一个无用的”神奇“功能,叫做scaffold.能够在model基础上,自动生成CRUD的界面. 说它无用,是因为rails的开发者David说,scaffold”不是应用程序开发的目的.它 ...
- SQLite数据库、ListView控件的使用
android下数据库的创建(重点) 在Android平台上,集成了一个轻量级嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本 ...
- ref:下一个项目为什么要用 SLF4J
ref:http://blog.mayongfa.cn/267.html 阿里巴巴 Java 开发手册 前几天阿里巴巴在云栖社区首次公开阿里官方Java代码规范标准,就是一个PDF手册,有命名规范,让 ...
- R语言编程艺术(1)快速入门
这本书与手上其他的R语言参考书不同,主要从编程角度阐释R语言,而不是从统计角度.因为之前并没有深刻考虑这些,因此写出的代码往往是一条条命令的集合,并不像是“程序”,因此,希望通过学习这本书,能提高编程 ...