[英]JSON parser doesn't work objective c
Some days ago I tryid to read and parse data from server. 几天前,我尝试从服务器读取和解析数据。 But today it doesn't work.
但是今天它不起作用。 What can be wrong?
有什么事吗 Here I out my method:
在这里,我列出了我的方法:
-(void) getDataFromServer
{
act = @"linkinginit";
deviceid = @"1xyhgjs";
fullRequest = [NSString stringWithFormat:@"http://app.ivson.by/?act=%@&deviceid=%@", act, deviceid];
NSLog(@"%@", fullRequest);
NSURL *url = [NSURL URLWithString:fullRequest];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSData *returnData = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: nil error: nil];
NSString *strData = [[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding];
NSRange searchedRange = NSMakeRange(0, [strData length]);
NSLog(@"Data from server = %@", strData);
NSString *json = strData;
// NSString *json = @"{\"code\":200,\"serviceID\":\"53d22b10e46a5\",\"sender\":1,\"hasPair\":0}";
NSData *jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
id obj = [NSJSONSerialization JSONObjectWithData:jsonData
options:0
error:&error];
if (obj) {
NSAssert([obj isKindOfClass:[NSDictionary class]], @"Expected a dictionary");
NSDictionary *dictObj = (NSDictionary *)obj;
NSNumber *code = dictObj[@"code"];
NSLog(@"code:", code);
NSString *serviceId = dictObj[@"serviceID"];
NSLog(@"serviceId:", serviceId);
NSNumber *sender = dictObj[@"sender"];
NSLog(@"sender:",sender);
NSNumber *hasPair = dictObj[@"hasPair"];
NSLog(@"hasPair:", hasPair);
} else {
NSLog(@"Failed to parse JSON: %@", [error localizedDescription]);
}
} }
And output is like this. 输出是这样的。 I need to have all variables(code, serviceId, sender and hasPair) separate.
我需要将所有变量(代码,serviceId,发送者和hasPair)分开。
2014-07-28 11:46:41.640 Nanny[1445:11303] http://app.ivson.by/? act=linkinginit&deviceid=1xyhgjs
2014-07-28 11:46:41.923 Nanny[1445:15b03] ADDRESPONSE - ADDING TO MEMORY ONLY: http://app.ivson.by/?act=linkinginit&deviceid=1xyhgjs
2014-07-28 11:46:41.924 Nanny[1445:11303] Data from server = {"code":200,"serviceid":"53d60c7cc35f1","sender":1,"hasPair":0}
2014-07-28 11:46:41.924 Nanny[1445:11303] code:
2014-07-28 11:46:41.925 Nanny[1445:11303] serviceId:
2014-07-28 11:46:41.925 Nanny[1445:11303] sender:
2014-07-28 11:46:41.925 Nanny[1445:11303] hasPair:
Thank you. 谢谢。
in NSLog, you're not passing type of arguments. 在NSLog中,您没有传递参数类型。 Try this
尝试这个
if (obj) {
NSAssert([obj isKindOfClass:[NSDictionary class]], @"Expected a dictionary");
NSNumber *code = obj[@"code"];
NSLog(@"code: %@", code);
NSString *serviceId = obj[@"serviceID"];
NSLog(@"serviceId: %@", serviceId);
NSNumber *sender = obj[@"sender"];
NSLog(@"sender: %@",sender);
NSNumber *hasPair = obj[@"hasPair"];
NSLog(@"hasPair: %@", hasPair);
} else {
NSLog(@"Failed to parse JSON: %@", [error localizedDescription]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.