最近开始搞ios开发,需要解析json文件,而且还是数组,用ios自带的NSJSONSerialization解析了第一层,发现再往下解析是,已经不行了,经过调试发现,解析一次后,ios自动把json文件的“:”换成了“=”,还加了一些“\n”,还有空格,经过努力都改正之后都不行,实在没办法了自己就硬着头皮解决了一下,希望给大家分享一下。
NSMutableString *strFile=[[NSMutableString alloc] initWithContentsOfFile:FILE_PATH encoding:NSUTF8StringEncoding error:nil];
NSMutableArray *arrayJson=[NSMutableArray arrayWithCapacity:42];
NSRange leftRange;
NSRange rightRange;
leftRange=[strFile rangeOfString:@"["];
leftRange.length=leftRange.location+1;
leftRange.location=0;
[strFile deleteCharactersInRange:leftRange];
rightRange=[strFile rangeOfString:@"]"];
rightRange.length=[strFile length]-rightRange.location;
[strFile deleteCharactersInRange:rightRange];
// NSLog(@"%@",strFile);
while(1)
{
NSString *tempString;
NSDictionary *tempDictionary;
rightRange=[strFile rangeOfString:@"}"];
tempString=[strFile substringWithRange:NSMakeRange(0, rightRange.location+1)];
NSData *tempData=[tempString dataUsingEncoding:NSUTF8StringEncoding];
tempDictionary=[NSJSONSerialization JSONObjectWithData:tempData options:kNilOptions error:nil];
[arrayJson addObject:tempDictionary];
if([tempString isEqualToString:strFile])
break;
[strFile deleteCharactersInRange:NSMakeRange(0, rightRange.location+2)];
}
NSMutableString *strFile=[[NSMutableString alloc] initWithContentsOfFile:FILE_PATH encoding:NSUTF8StringEncoding error:nil];
NSMutableArray *arrayJson=[NSMutableArray arrayWithCapacity:42];
NSRange leftRange;
NSRange rightRange;
leftRange=[strFile rangeOfString:@"["];
leftRange.length=leftRange.location+1;
leftRange.location=0;
[strFile deleteCharactersInRange:leftRange];
rightRange=[strFile rangeOfString:@"]"];
rightRange.length=[strFile length]-rightRange.location;
[strFile deleteCharactersInRange:rightRange];
// NSLog(@"%@",strFile);
while(1)
{
NSString *tempString;
NSDictionary *tempDictionary;
rightRange=[strFile rangeOfString:@"}"];
tempString=[strFile substringWithRange:NSMakeRange(0, rightRange.location+1)];
NSData *tempData=[tempString dataUsingEncoding:NSUTF8StringEncoding];
tempDictionary=[NSJSONSerialization JSONObjectWithData:tempData options:kNilOptions error:nil];
[arrayJson addObject:tempDictionary];
if([tempString isEqualToString:strFile])
break;
[strFile deleteCharactersInRange:NSMakeRange(0, rightRange.location+2)];
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货