我试图检查我的.json文件中的值是否为" 0"或" 1"。
我的.json文件:
{
"timetable": [
{
"50mhour": "1",
"on": "1"
},
{
"50hour": "2",
"on": "1"
},
{
"50hour": "50min1",
"on": "1"
},
{
"techhour": "4",
"on": "1"
},
]
}
我创建了一个调用此URL的方法:
-(void)makeRequests
{
NSURL *url = [NSURL URLWithString:@"http://content.app.ch/api/timetable.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id responseObject)
{
self.get = [responseObject objectForKey:@"timetable"];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id responseObject)
{
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
[operation start];
}
当然,我也创建了一个NSDictionary
NSDictionary *tempDictionary= [self.get objectAtIndex:1];
我对objectAtIndex
值不太确定。
检查值是否为" 0"的正确方法是什么?或" 1"我知道isEqualToString:
可能会这样做,但我不确定如何。
更新: 从下面的答案中得出这个建议:
NSNumber *obj = [[self.get objectAtIndex:0] objectForKey:@"on"];
int onValue = [obj intValue];
if (onValue == 1) {
NSLog(@"works!");
}
else {
NSLog(@"doesn't work!");
}
代码有效,但JSON值为" 1"并且NSlog仍然显示"不起作用!"。
答案 0 :(得分:1)
您呈现的JSON编码数组(时间表)只有一个元素,因此使用objectAtIndex:1
会导致程序崩溃/抛出超出范围的异常。从数组中获取元素0或lastObject
,您将获得指向以下字典的指针:
{
"50hour": "1",
"on": "1"
}
由于这是一本字典,因此查找值的正确方法是按键:
NSNumber *obj = [[self.get objectAtIndex:0] objectForKey:@"on"]; // or @"50hour", whichever you need
int onValue = [obj intValue];
答案 1 :(得分:0)
您的JSON流程如下:
你有JSON中的数组,在那个数组中,第一个元素是字典。
首先将JSON中的数据直接转换为数组。然后将Array的第一个对象放入字典中,然后得到像这样的值
从此代码中获取On的值:
int on = [[[self.get objectAtIndex:0] objectForKey:@"on"] integerValue];
int value = [[[self.get objectAtIndex:0] objectForKey@"50hour"] integerValue]