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

本文介绍了在iOS开发中,如何处理从网络获取的包含换行符的JSON字符串,通过使用`ReplacingNewLineAndWhitespaceCharactersFromJson:`方法去除换行符,确保能够正确解析为JSON字典。主要步骤包括设置请求和响应序列化器,获取HTML内容,转换字符串,替换特定字符,最后用`NSJSONSerialization`进行解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这样的我是文章后面出现了换行符,这是一个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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值