(ios)字符串與數(shù)組,字典,對象之間的轉(zhuǎn)換

  • app開發(fā)過程中,與服務(wù)器數(shù)據(jù)交流時,服務(wù)器常常需要我們把一些集合以字符串的方式傳給服務(wù)器,下面就是一些字符串和數(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容