- app開發(fā)過程中纯出,與服務器數(shù)據(jù)交流時,服務器常常需要我們把一些集合以字符串的方式傳給服務器敷燎,下面就是一些字符串和數(shù)組暂筝,字典,對象之間的轉(zhuǎn)換硬贯。
/**
* 判斷自己是否為空
*
* @return <#return value description#>
*/
- (BOOL) isBlank
{
if (!self.length ||
self == nil ||
self == NULL ||
(NSNull *)self == [NSNull null] ||
[self isKindOfClass:[NSNull class]] ||
[self isEqualToString:@"(null)"] ||
[self isEqualToString:@"<null>"] ||
[self isEqualToString:@"null"] ||
[self isEqualToString:@"NULL"]
) {
return YES;
}else {
return NO;
}
}
/**
* json字符串焕襟,轉(zhuǎn)成字典
*
* 字符串調(diào)用
* @return <#return value description#>
*/
- (NSDictionary *)stringJsonToDictionary{
if ([self isBlank]) {
return nil;
}
NSData *jsonData = [self dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:err];
if(err) {
NSLog(@"json解析失敗:%@",err);
return nil;
}
return dictionary;
}
/**
* 字典轉(zhuǎn)json字符串
*
* 字典調(diào)用
* @return <#return value description#>
*/
- (NSString *)dictionaryToJsonString{
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
options:NSJSONWritingPrettyPrinted
error:nil];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
/**
* 數(shù)組轉(zhuǎn)json字符串
*
* 數(shù)組調(diào)用
* @return <#return value description#>
*/
- (NSString *)arrayToJsonString{
NSError *parseError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&parseError];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
/**
* 對象轉(zhuǎn)換為字典
*
* @param obj 需要轉(zhuǎn)化的對象
*
* @return 轉(zhuǎn)換后的字典
*/
+ (NSDictionary*)getObjectData:(id)obj {
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
unsigned int propsCount;
objc_property_t *props = class_copyPropertyList([obj class], &propsCount);
for(int i = 0;i < propsCount; i++) {
objc_property_t prop = props[i];
NSString *propName = [NSString stringWithUTF8String:property_getName(prop)];
id value = [obj valueForKey:propName];
if(value == nil) {
value = [NSNull null];
} else {
value = [self getObjectInternal:value];
}
[dic setObject:value forKey:propName];
}
return dic;
}
+ (id)getObjectInternal:(id)obj {
if([obj isKindOfClass:[NSString class]]
||
[obj isKindOfClass:[NSNumber class]]
||
[obj isKindOfClass:[NSNull class]]) {
return obj;
}
if([obj isKindOfClass:[NSArray class]]) {
NSArray *objarr = obj;
NSMutableArray *arr = [NSMutableArray arrayWithCapacity:objarr.count];
for(int i = 0; i < objarr.count; i++) {
[arr setObject:[self getObjectInternal:[objarr objectAtIndex:i]] atIndexedSubscript:i];
}
return arr;
}
if([obj isKindOfClass:[NSDictionary class]]) {
NSDictionary *objdic = obj;
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:[objdic count]];
for(NSString *key in objdic.allKeys) {
[dic setObject:[self getObjectInternal:[objdic objectForKey:key]] forKey:key];
}
return dic;
}
return [self getObjectData:obj];
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者