ios中解析json对象基类_移动开发_编程开发_程序员俱乐部
中国优秀的程序员网站
程序员频道
CXYCLUB技术
地图
最新资讯
|
百度新闻
|
GOOGLE地图
|
RSS订阅
|
更多
职场话题
生活休闲
恋爱交友
程序人生
学习进修
职业发展
项目管理
求职面试
程序员创业
JAVA
.NET
C/C++
Ruby
Delphi
JavaScript
PHP
ASP
JSP
HTML
XML
移动开发
开发工具
其他
编程开发
数据库
操作系统
新闻资讯
互联网
非技术区
非技术区
生活休闲
恋爱交友
职业发展
求职面试
程序人生
移动开发
开发工具
DB2
MySql
Sybase
开发
JAVA
.NET
PHP
C/C++
数据库
SQL Server
Oracle
互联网
运营
推广
营销
SEO
系统
Linux
Unix
Windows
资讯
动态
产品
人物
创业
职场
学习
管理
热搜:
class
Win8
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
controller
异步
同步
编码
版本
缓存
HTTP
内存
class
Win8
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
controller
异步
同步
更多>>
您所在的位置:
程序员俱乐部
>
编程开发
>
移动开发
> ios中解析json对象基类
ios中解析json对象基类
2013/11/6 12:38:54 苹果吧 博客园
我要评论(
0
)
摘要:
这个是对上面一篇写的一个解析json对象的基类@interfaceBaseObjectFromJson:NSObject+(id)objectWithDict:(NSDictionary*)dictwithClassName:(NSString*)className;+(NSArray*)objectsWithArray:(NSArray*)arraywithClassName:(NSString*)className;-(id)initWithDict:(NSDictionary*)dict
标签:
iOS
JSON
解析
JS
这个是对上面一篇写的一个
解析
json对象的基类
class="dp-objc" start="1">
@interface
BaseObjectFromJson : NSObject
+ (
id
)
objectWithDict
:(NSDictionary*)dict
withClassName
:(NSString*)className;
+ (NSArray*)
objectsWithArray
:(NSArray*)array
withClassName
:(NSString*)className;
- (
id
)
initWithDict
:(NSDictionary*)dict;
- (NSString*)
propertyClassName
:(NSString*)propertyName;
@end
//
// BaseObjectFromJson.m
// xxoo
//
// Created by Tommy on 13-11-5.
// Copyright (c) 2013年 Tommy. All rights reserved.
//
#import "BaseObjectFromJson.h"
#import "objcUtils.h"
@implementation
BaseObjectFromJson
+ (
id
)
objectWithDict
:(NSDictionary*)dict
withClassName
:(NSString*)className{
Class objClass =
NSClassFromString
(className);
BaseObjectFromJson* object =
nil
;
if
(objClass){
object = [[objClass
alloc
]
initWithDict
:dict];
}
else
{
NSAssert(
0
,
@"Unknown class:%@"
,className);
}
return
object;
}
+ (NSArray*)
objectsWithArray
:(NSArray*)array
withClassName
:(NSString*)className{
Class objClass = NSClassFromString(className);
BaseObjectFromJson* object =
nil
;
NSMutableArray* objArray =
nil
;
if
(objClass){
objArray = [NSMutableArray
new
];
for
(NSDictionary* dict in array){
object = [[objClass
alloc
]
initWithDict
:dict];
[objArray
addObject
:object];
}
}
else
{
NSAssert(
0
,
@"Unknown class:%@"
,className);
}
return
objArray;
}
- (NSString*) description{
NSMutableString* desc = [NSMutableString
new
];
NSArray* propertyArray = getPropertyNameList(
self
);
[desc
appendString
:
@"{\r"
];
for
(NSString* key in propertyArray) {
[desc
appendFormat
:
@" %@ : %@\r"
,key,[
self
valueForKey
:key]];
}
[desc
appendString
:
@"\r}"
];
return
desc ;
}
- (
id
)
initWithDict
:(NSDictionary*)dict{
NSArray* propertyArray = getPropertyNameList(
self
);
for
(NSString* key in propertyArray) {
@try
{
if
([dict[key]
isKindOfClass
:[NSArray
class
]]){
NSString* className = [
self
propertyClassName
:key];
NSArray* array = [BaseObjectFromJson
objectsWithArray
:dict[key]
withClassName
:className?className:key];
[
self
setValue
:array
forKey
:key];
}
else
if
([dict[key]
isKindOfClass
:[NSDictionary
class
]]){
[
self
setValue
:[BaseObjectFromJson
objectWithDict
:dict[key]
withClassName
:key]forKey:key];
}
else
{
[
self
setValue
:dict[key]
forKey
:key];
}
}
@catch
(
NSException
*exception) {
NSLog(
@"except:%@:%@"
,key,dict[key]);
}
}
return
self
;
}
- (NSString*)
propertyClassName
:(NSString*)propertyName{
return
nil
;
}
@end
这个demo很简单,用的还是上一篇中的
例子
。
NSString* jsonString = request
.responseString
;
NSData* jsonData = [jsonString
dataUsingEncoding
:NSUTF
8
StringEncoding];
NSDictionary
*jsonObj = [jsonData
objectFrom
JS
ONData
];
Result* result = [SearchResult
objectWithDict
:jsonObj
withClassName
:
@"Result"
];
如果一个需要对一个json对象的解析中不存在数组之类的,就直接继承就行,什么都不用写。如果有数组的话,就需要
重载
- (NSString*)
propertyClassName
:(NSString*)propertyName这个方法就行。这样就可以找到正确的类进行解析了。
上一篇:
ios使用kvc机制简化对json的解析
下一篇:
三星董事长位列韩国首富 资产仅117亿美元
相关文章
·
ios中解析json对象基类
·
ios使用kvc机制简化对json的解析
·
通过OpenGL ES在iOS平台实践增
·
通过OpenGL ES在iOS平台实践增
·
Modern版Office明年降临 iO
·
iOS archive(归档)的总结
·
报告称微软WP系统已在意大利市场上超越i
·
iOS: 在代码中使用Autolayou
·
解析HashMap的存储方式
·
详细解析Java中抽象类和接口的区别
查看所有评论(
0
)
我要评论
发表评论
用户名:
匿名
最新文章
Mono Fo..
Android..
·
Mono For Android的项目发
·
ios中解析json对象基类
·
ios使用kvc机制简化对json的解析
·
Android--Service之提高
·
Mp3音乐文件列表实现
·
【Android】Android处理Ho
·
Android Developers:保
·
android开发关于popupwind
·
Android中实现如下多语言选择Rad
·
通过OpenGL ES在iOS平台实践增
·
AbsListView.OnScroll
·
通过OpenGL ES在iOS平台实践增
·
关于R.styleable的问题
·
Windows phone应用开发[20
·
【Android】spannableSt
最新标签
class
Win8
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
controller
异步
同步
今日热点
·
JSP+WAP2.0规范
·
android SurfaceView
·
android---->进度条(P
·
解决android2.2把安装程序放入S
·
圆角PopupWindow对话框和圆角E
·
ListView问题解决办法总结
·
Android 获取图片固定大小的缩略图
·
Android的3D旋转
·
如何把默认的壁纸设置为动态壁纸
·
android Activity布局初步
推荐文章
android..
android..
·
android Canvas让我很困惑
·
android ListView的分段显
·
iPhone中使用ShareKit一键分
·
Android 2.1 从SD卡导入联系
·
android中设置List
·
android HTC Desire (
·
PC机上体验Android x86操作系
·
Android make脚本简记
·
Android PreferenceAc
·
android文件上传(android端
·
Android手势研究(textview
·
Android手势研究(textview
·
android的拖拽问题--onTouc
·
TableView 的使用 实例二
·
android 选项卡(TabHost)
English
|
关于我们
|
诚聘英才
|
联系我们
|
网站大事
|
友情链接
|
意见反馈
|
网站地图
Powered by
程序员俱乐部
程序提供: HugoCMS 2.0
网站备案:苏ICP备11048748号-1