调用时深度的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 ;
}