iOS如何过滤网络数据中的换行符


这样的我是文章后面出现了换行符,这是一个json类型的字符串,需要恢复成json字典类型,但是JSON是不能解析带有换行符字符串 所以方法如下:

- (void)getDataForUrlTwo{

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    //字符串类型数据接收方式

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    NSString *stringURL =[NSString stringWithFormat:@"http://xxx.xx.xx.xxx:xxxx/infocms/csi_custom.jspx?tpl=getContentData&contentId=565"];

    [manager GET:stringURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

//        NSLog(@"%@",responseObject);

        NSString *shabi =  [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];

//        NSLog(@"sha%@",shabi);

        NSString *hah = [self ReplacingNewLineAndWhitespaceCharactersFromJson:shabi];

//        NSLog(@"%@",hah);

        NSString *lala = [hah stringByReplacingOccurrencesOfString:@"|" withString:@""];

        NSData *jsonData = [lala dataUsingEncoding:NSUTF8StringEncoding];

        NSError *err;

        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData

                                                            options:NSJSONReadingMutableContainers

                                                              error:&err];

        if(err) {

            NSLog(@"json解析失败:%@",err);

        }

        //数组不断的加进数据,从而达到和上拉加载和cellindexpath的配合。

//        NSArray *array = dic[@"data"];

        NSLog(@"%@",dic);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"Error: %@", error);

        //        UIAlertView *alertViewTwo = [[UIAlertView alloc] initWithTitle:@"消息提示" message:@"网络超时" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil,nil];

        //        [alertViewTwo show];

    }];

}

//去掉换行符

- (NSString *)ReplacingNewLineAndWhitespaceCharactersFromJson:(NSString *)dataStr{

    NSScanner *scanner = [[NSScanner alloc] initWithString:dataStr];

    [scanner setCharactersToBeSkipped:nil];

    NSMutableString *result = [[NSMutableString alloc] init];

    

    NSString *temp;

    NSCharacterSet *newLineAndWhitespaceCharacters = [ NSCharacterSet newlineCharacterSet];

    // 扫描

    while (![scanner isAtEnd])

    {

        temp = nil;

        [scanner scanUpToCharactersFromSet:newLineAndWhitespaceCharacters intoString:&temp];

        if (temp) [result appendString:temp];

        // 替换换行符

        if ([scanner scanCharactersFromSet:newLineAndWhitespaceCharacters intoString:NULL]) {

            if (result.length > 0 && ![scanner isAtEnd]) // Dont append space to beginning or end of result

                [result appendString:@"|"];

        }

    }

    return result;

}

你可能感兴趣的:(代码库,知识学习)