一个关于字典和数组混合的多层多层次数据转化为JSON数据处理方法
2011-11-01 17:31
621 查看
-(NSString *)getJSONStringFromObj:(id)obj {
NSLog(@"%@",[[obj class] description]);
SBJSON *json = [[[SBJSON alloc] init] autorelease];
if ([obj isKindOfClass:[NSArray class]]) {
NSMutableArray *mt_array = [NSMutableArray array];
NSArray *t_array = (NSArray *)obj;
for (id t_obj in t_array) {
if ([t_obj isKindOfClass:[NSString class]]) {
[mt_array addObject:(NSString *)t_obj];
} else {
NSString *jsonStr = [self getJSONStringFromObj:t_obj];
[mt_array addObject:jsonStr];
}
}
return [json stringWithObject:mt_array error:nil];
} else if ([obj isKindOfClass:[NSDictionary class]]) {
NSDictionary *t_dict = (NSDictionary *)obj;
NSMutableDictionary *mt_dict = [NSMutableDictionary dictionary];
NSArray *keys = [t_dict allKeys];
for (NSString *key in keys) {
id t_obj = [t_dict objectForKey:key];
if ([t_obj isKindOfClass:[NSString class]]) {
[mt_dict setObject:t_obj forKey:key];
} else {
NSString *jsonStr = [self getJSONStringFromObj:t_obj];
[mt_dict setObject:jsonStr forKey:key];
}
}
return [json stringWithObject:mt_dict error:nil];
} else if ([obj isKindOfClass:[NSString class]]) {
return obj;
} else {
return [[obj class] description];
}
}
NSLog(@"%@",[[obj class] description]);
SBJSON *json = [[[SBJSON alloc] init] autorelease];
if ([obj isKindOfClass:[NSArray class]]) {
NSMutableArray *mt_array = [NSMutableArray array];
NSArray *t_array = (NSArray *)obj;
for (id t_obj in t_array) {
if ([t_obj isKindOfClass:[NSString class]]) {
[mt_array addObject:(NSString *)t_obj];
} else {
NSString *jsonStr = [self getJSONStringFromObj:t_obj];
[mt_array addObject:jsonStr];
}
}
return [json stringWithObject:mt_array error:nil];
} else if ([obj isKindOfClass:[NSDictionary class]]) {
NSDictionary *t_dict = (NSDictionary *)obj;
NSMutableDictionary *mt_dict = [NSMutableDictionary dictionary];
NSArray *keys = [t_dict allKeys];
for (NSString *key in keys) {
id t_obj = [t_dict objectForKey:key];
if ([t_obj isKindOfClass:[NSString class]]) {
[mt_dict setObject:t_obj forKey:key];
} else {
NSString *jsonStr = [self getJSONStringFromObj:t_obj];
[mt_dict setObject:jsonStr forKey:key];
}
}
return [json stringWithObject:mt_dict error:nil];
} else if ([obj isKindOfClass:[NSString class]]) {
return obj;
} else {
return [[obj class] description];
}
}
相关文章推荐
- 关于跨域访问json数据的一个笨方法的实践
- JS解析json数据并将json字符串转化为数组的实现方法
- JS解析json数据并将json字符串转化为数组的实现方法
- JS解析json数据并将json字符串转化为数组的实现方法
- 关于solr建立json 多层嵌套复杂数据的第一种方法
- 关于java接收前台$.ajax格式为多维json数组数据为null的原因及解决方法
- 一个简单的数据解析就是数组里面只有字典类型的用jsonmodel方式
- JS解析json数据并将json字符串转化为数组的实现方法
- json解析出来的数据库是字典和数组的组合,创建一个model来接收解析数据
- JS解析json数据并将json字符串转化为数组的实现方法
- JS解析json数据并将json字符串转化为数组的实现方法
- JS解析json数据(如何将json字符串转化为数组)
- JS数据处理[对json数据的一些简单处理转为数组或者键值对]
- 关于复杂json数据的处理(多重嵌套和数组)
- JSON PHP中返回JSON数据(多个JSON通过一个大的数组组合成一个JSON字符串),在客户端解析JSON数据减轻服务端压力
- JS 将变量 转化为字符串的方法, 适用于所有类型,数组, JSON对象,函数和基本类型等
- 共享一个PD导数据字典的方法
- php实现数组中索引关联数据转换成json对象的方法
- iOS 关于数组、字典等数据类型异常操作crash的解决办法
- ASP.NET提取多层嵌套json数据的方法