当我从iOS上的PHP获取JSON对象时,我得到NULL值

时间:2014-02-18 08:30:17

标签: ios objective-c json

第一次编辑:

我将returnData放在JSONObjectWithData:options:error中,但错误仍然存​​在。

问题发生在10次中,但这很烦人,因为应用程序不起作用。

2014-02-18 10:26:03.236 finalAbogados[47279:f803] Error en consulta basica: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x686c330 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

我在iOS上做一个从PHP脚本获取JSON对象的APP。

该脚本从MS SQL中的数据库调用数据,并在JSON对象中对这些数据进行编码。然后我在iOS上获取对象,并使用NSJSONSerialize来处理数据。

问题是,有时我得到一个空值,有时候我得到了正确的数组。数据返回给我的脚本总是一样的,在这里公开:

[{"0":"","NombreOrganismo":"","1":"Judicial","NombreTipoInstancia":"Judicial","2":"(Sin asignar)","Numero":"(Sin asignar)"}]

执行查询的代码和相关数据是:

NSString *myRequestString = [NSString stringWithFormat:@"user=%@&pass=%@&cod_asunto=%@", u_received, p_received, cod_received];
     NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@""]];

     [request setHTTPMethod:@"POST"];
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
     [request setHTTPBody:myRequestData];

     NSURLResponse *response;
     NSError *error;

     NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

     NSString *content = [NSString stringWithUTF8String:[returnData bytes]];

     NSData *jsondata = [content dataUsingEncoding:NSUTF8StringEncoding];

     NSError *jsonError = nil; 


     id jsonObject = [NSJSONSerialization JSONObjectWithData:jsondata options:kNilOptions error:&jsonError];

     NSMutableArray *NombreOrga = [[NSMutableArray alloc] init];
     NSMutableArray *NombreInstancia = [[NSMutableArray alloc] init];
     NSMutableArray *Numero = [[NSMutableArray alloc] init];

     if ([jsonObject isKindOfClass:[NSArray class]]) {
     NSLog(@"Its an ARRAY!!.");

     NSArray *jsonArray = (NSArray *)jsonObject;

     for (id item in jsonArray) {
     if ([item isKindOfClass:[NSDictionary class]]) {

     NSString *aux = [(NSDictionary*)item objectForKey:@"NombreOrganismo"];   
     NSString *aux2 = [(NSDictionary*)item objectForKey:@"Numero"];
     NSString *aux3 = [(NSDictionary*)item objectForKey:@"NombreTipoInstancia"];

     if (aux) {
         [NombreOrga addObject:aux];
     }
     if (aux2) {
         [NombreInstancia addObject:aux2];
     }
     if (aux3) {
         [Numero addObject:aux3];
     }

     } else {
     NSLog(@"item %@ is not a dictionary",item);
     }

     }
     }
     else {
     NSLog(@"Its probably a DICTIONARY!.");

     }

这很奇怪,有时NSLog告诉我“它可能是一个字典!”并且值为空且应用程序不起作用。有时NSLog告诉我“它是一个阵列!”并且应用程序正常工作。

但是SCRIPT返回的数据总是一样的!

非常感谢大家的帮助。

0 个答案:

没有答案