美文网首页iOS学习笔记2017-3-29iOSOC进化
NSString、NSArray、NSDictionary转JS

NSString、NSArray、NSDictionary转JS

作者: 嫌疑人zx | 来源:发表于2017-01-17 16:27 被阅读328次

    关于iOS开发,如何将NSString、NSArray、NSDictionary数据转换成JSON数据,然后再使用Base64编码传输给后台,下面记录的是:NSString、NSArray、NSDictionary转JSON的方法,我写在一个NSString的类别中,如下:

    传送门:测试Base64编码是否正确 / 测试JSON是否正确

    NSString+YTH.h
    /**
     未知类型(仅限字典/数组/字符串)
     
     @param object 字典/数组/字符串
     @return 字符串
     */
    +(NSString *) jsonStringWithObject:(id) object;
    
    /**
     字典类型转JSON
    
     @param dictionary 字典数据
     @return 返回字符串
     */
    +(NSString *) jsonStringWithDictionary:(NSDictionary *)dictionary;
    
    
    /**
     数组类型转JSON
    
     @param array 数组类型
     @return 返回字符串
     */
    +(NSString *) jsonStringWithArray:(NSArray *)array;
    
    
    /**
     字符串类型转JSON
    
     @param string 字符串类型
     @return 返回字符串
     */
    +(NSString *) jsonStringWithString:(NSString *) string;
    
    
    NSString+YTH.h
    /**
     未知类型(仅限字典/数组/字符串)
     
     @param object 字典/数组/字符串
     @return 字符串
     */
    +(NSString *) jsonStringWithObject:(id) object{
        NSString *value = nil;
        if (!object) {
            return value;
        }
        if ([object isKindOfClass:[NSString class]]) {
            value = [NSString jsonStringWithString:object];
        }else if([object isKindOfClass:[NSDictionary class]]){
            value = [NSString jsonStringWithDictionary:object];
        }else if([object isKindOfClass:[NSArray class]]){
            value = [NSString jsonStringWithArray:object];
        }
        return value;
    }
    
    /**
     字符串类型转JSON
    
     @param string 字符串类型
     @return 返回字符串
     */
    +(NSString *) jsonStringWithString:(NSString *) string{
        return [NSString stringWithFormat:@"%@",
                [[string stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"] stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]
                ];
    }
    
    /**
     数组类型转JSON
    
     @param array 数组类型
     @return 返回字符串
     */
    +(NSString *) jsonStringWithArray:(NSArray *)array{
        NSMutableString *reString = [NSMutableString string];
        [reString appendString:@"["];
        NSMutableArray *values = [NSMutableArray array];
        for (id valueObj in array) {
            NSString *value = [NSString jsonStringWithObject:valueObj];
            if (value) {
                [values addObject:[NSString stringWithFormat:@"%@",value]];
            }
        }
        [reString appendFormat:@"%@",[values componentsJoinedByString:@","]];
        [reString appendString:@"]"];
        return reString;
    }
    
    /**
     字典类型转JSON
    
     @param dictionary 字典数据
     @return 返回字符串
     */
    +(NSString *) jsonStringWithDictionary:(NSDictionary *)dictionary{
       NSError *parseError = nil;
    
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
    
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    

    相关文章

      网友评论

      • 骨古:你好 你这里有两个问题 第一个是字典里如果有int类型的话 转换后的结果是丢失的,第二个是当字典包含多层时,格式就会出错,会多出""。
        嫌疑人zx:@骨古 我看了下别人的写法,你看能不能用,感觉还要简单些
        + (NSString*)dictionaryToJson:(NSDictionary *)dic
        {
        NSError *parseError = nil;

        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];

        return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
        骨古:@嫌疑人zx NSDictionary *dic=@{
        @"name":@"jack",
        @"age":@17,
        @"phone":@1872223455
        };
        用这个测试 返回的是 {"name":"jack"}
        嫌疑人zx:@骨古 嗦嘎,我之前还没遇到这种数据,明天去公司看看

      本文标题:NSString、NSArray、NSDictionary转JS

      本文链接:https://www.haomeiwen.com/subject/zlwmbttx.html