json字符串跟objective-c模型的相互转换
在当今这样一个各种openapi开放的年代,在熟悉的语言下面找到一款得心应手的将json字符串转换成模型的库可以说是十分必要的,在NET平台下,我们有Newtonsoft.Json这个库使用,那么在ios平台下,有什么可以让我们使用呢,在做iphone开发的时候,找到了jastor这个库,现在就基本的用法做个介绍。
假如我们有如下这么一个类
#import <Foundation/Foundation.h>
#import "Jastor.h" @interface DeviceEntity : Jastor @property (nonatomic,strong) NSNumber *isonline;
@property (nonatomic,strong) NSNumber *isopen;
@property (nonatomic,copy) NSString *brand; @end #import "DeviceEntity.h" @implementation DeviceEntity @synthesize isopen,isonline,brand; @end #import <Foundation/Foundation.h>
#import "Jastor.h"
#import "DeviceEntity.h" @interface UserDevicesEntity : Jastor @property (nonatomic,strong) NSNumber *closecount;
@property (nonatomic,strong) NSNumber *opencount;
@property (nonatomic,copy) NSString *success;
@property (nonatomic,strong) NSArray *items; @end #import "UserDevicesEntity.h"
#import "DeviceEntity.h" @implementation UserDevicesEntity @synthesize closecount,opencount,success,items; + (Class) items_class {
return [DeviceEntity class];
} @end
注意这里在定义相应属性的时候如果是基本类型我们需要用NSNumber来进行包装,上面的例子也表明了我们可以用数组来做为一个属性,只在是实现的时候需要告诉它这个数组是什么类型的,你定义的属性名后跟_class的形式,注意这一点不能搞错。
在调用服务的时候,对方一般都会返回一个json,我们要做的就是根据这个字符串实例化一个NSDictionary出来,然后就可以根据这个NSDictionay实例化相应的模型了,比我们直接解析这个字符串方便多了,代码如下:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"",@"isonline",@"",@"isopen",@"brand1",@"brand", nil];
DeviceEntity *device = [[DeviceEntity alloc] initWithDictionary:dictionary];
我们可以验证下,
NSLog(@"device's brand is %@",device.brand);
NSLog(@"device's isonline is %d",[device.isonline intValue]);
NSLog(@"device's isopen is %d",[device.isopen intValue]);
将会打印出
-- ::37.602 objc-grammar-learing[:f803] device's brand is brand1
-- ::37.605 objc-grammar-learing[:f803] device's isonline is 1
-- ::37.605 objc-grammar-learing[:f803] device's isopen is 1
看看是不是方便很多,当然上面只是很简章的模型,一般来讲,真实项目中的模型肯定比这复杂,比如一对一,一对多等等,在官网上面都有相应例子可以参考。
json字符串跟objective-c模型的相互转换的更多相关文章
- JSON字符串和Dictionary字典类型的相互转换
在开发过程中,往往会遇到数据类型转换的情况,根据自己的业务,可能转换类型有多种,下面就说一下json字符串和字典类型的转换. public static class JsonUntity { /// ...
- [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换
1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...
- 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换
[源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...
- JSON对象、JSON字符串的相互转换
JSON对象.JSON字符串的相互转换 json的格式: 第一种方式: 单一的json字符串,转换成json对象时,需要 eval('(' + json + ')');这样的格式,中间需要加括号 va ...
- javascript:json对象和json字符串的相互转换
json对象和字符串的相互转换 //使用json中的parser方法转换: var str='{"name":"fendouer", "age&quo ...
- JS中实现JSON对象和JSON字符串之间的相互转换
对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间 ...
- 零基础学习java------26--------获取省访问量的top3,APP版本数据分析,事务,json,json字符串与对象间的相互转换,求电影平均分
一. day23中的ip,url案例(前面答案错了) 思路分析: 1.创建javabean,用来存储ip.txt各字段的信息 2. 创建java工具类,封装相应的方法 (1) 加载读取ip.txt文档 ...
- 【JS对象、JSON字符串】之间的相互转换
在Firefox,chrome,opera,safari,ie9,ie8等浏览器直接可以用JSON对象的stringify()和parse()方法. 1.JSON.stringify(obj)将JS对 ...
- js中json字符串与json对象的相互转换
web前端开发过程中,数据传输json是以字符串的形式传递,而js操作的是JSON对象. 一.JSON字符串转换为JSON对象 var obj = JSON.parse(str[, reviver]) ...
随机推荐
- sizeof(类)
类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小.首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配 ...
- (翻译)一起使用 .NET 和 Docker——DockerCon 2018 更新
原文:https://blogs.msdn.microsoft.com/dotnet/2018/06/13/using-net-and-docker-together-dockercon-2018-u ...
- ZOJ 3497 Mistwald
矩阵快速幂. 邻接矩阵的$P$次方就是走$P$步之后的方案数,这里只记录能否走到就可以了.然后再判断一下三种情况即可. #pragma comment(linker, "/STACK:102 ...
- 决策树:ID3与C4.5算法
1.基本概念 1)定义: 决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系,树中每个节点代表的某个可能的属性值. 2)表示方法: 通过把实例从根结点排列到某个叶子结点来分类实例,叶子 ...
- Python安装scrapy提示 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools&quo ...
- Linux命令之which
which [选项] [命令] 将命令的完整路径写入标准输出.具体是在环境变量PATH设置的目录里查找符合条件的文件,而环境变量PATH中保存了查找命令时需要遍历的目录. (1).选项 -v,-V,- ...
- 35、Flask实战第35天:权限设计
二进制及其相关运算 认识二进制 0,1,2,3,4,5,6,7,8,9,10:逢10进1 0,1:逢2进1 二进制转十进制 十进制 二进制 0 0 1 1 2 10 3 11 4 100 255 11 ...
- 【vim】mac配置vim,molokai配色
效果如下: 首先修改主目录下的.vimrc: "======================================================================= ...
- hdu 1529 Cashier Employment(差分约束)
Cashier Employment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Luogu P3960 列队 线段树
题面 线段树入门题. 我们考虑线段树来维护这个矩阵. 首先我们先定n+1棵线段树前n棵维护每行前m-1个同学中没有离队过的同学,还有一棵维护第m列中没有离队过的同学.再定n+1棵线段树前n棵线段树维护 ...