(ios)字符串与数组,字典,对象之间的转换

  • app开发过程中,与服务器数据交流时,服务器常常需要我们把一些集合以字符串的方式传给服务器,下面就是一些字符串和数组,字典,对象之间的转换。
/**
 *  判断自己是否为空
 *
 *  @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字符串,转成字典
 *
 *  字符串调用
 *  @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;
}


/**
 *  字典转json字符串
 *
 *  字典调用
 *  @return <#return value description#>
 */
 - (NSString *)dictionaryToJsonString{
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
                                                       options:NSJSONWritingPrettyPrinted
                                                         error:nil];
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
/**
*  数组转json字符串
*
*  数组调用
*  @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];
   
}
/**
*  对象转换为字典
*
*  @param obj 需要转化的对象
*
*  @return 转换后的字典
*/
+ (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];
  
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容