您的位置:首页 > 理论基础 > 计算机网络

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

2015-03-23 18:19 363 查看


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

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

// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: