調用時深度的default值爲0
-(void)testPetch:(NSString*) json forDeep:(int) level
{NSString* result = @"";
NSString* prevChar = @"";
NSUInteger slen = [json length];
BOOL needrec = NO;
NSString* lStr = @"";
for (int i=0; i < slen; i++) {
NSString* sc = [json substringWithRange:NSMakeRange(i,1)];
if ([sc isEqualToString:@"{"] && (!needrec))
{
if ([result length]>0) {
// delete left and right space
[result stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([[result substringWithRange:NSMakeRange(0,1)] isEqualToString:@","])
{
result = [result substringWithRange:NSMakeRange(1,[result length]-1)];
}
NSLog(@"add (%d)deep json object :%@ ",level,result);
result = @"";
}
else
{
NSLog(@"add (%d)deep json object : object name is null",level);
}
lStr = [json substringWithRange:NSMakeRange(i+1,slen-i-1)];
break;
}
if ([sc isEqualToString:@"["] && (!needrec))
{
if ([result length]>0) {
// delete left and right space
[result stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([[result substringWithRange:NSMakeRange(0,1)] isEqualToString:@","])
{
result = [result substringWithRange:NSMakeRange(1,[result length]-1)];
}
NSLog(@"add (%d)deep json array : %@",level,result);
result = @"";
}
else
{
NSLog(@"add (%d)deep json array : array name is null",level);
}
lStr = [json substringWithRange:NSMakeRange(i+1,slen-i-1)];
break;
}
if ([sc isEqualToString:@"}"] && (!needrec))
{
NSLog(@"Add (%d) a member%@",level,result);
level = level -1;
result = @"";
continue;
}
if ([sc isEqualToString:@"]"] && (!needrec))
{
NSLog(@"Add (%d) a array member%@",level,result);
level = level -1;
result = @"";
continue ;
}
if ([sc isEqualToString:@"\""] && (![prevChar isEqualToString:@"\\"]))
{
needrec = !needrec;
}
result = [result stringByAppendingFormat:@"%@",sc];
prevChar = sc;
}
// Loop
{
[self testPetch:lStr forDeep:level+1];
}
return ;
}