JSON iOS isEqualToString
我正在尝试检查.json文件中的值是“0”还是“1” My.json文件:JSON iOS isEqualToString,ios,objective-c,Ios,Objective C,我正在尝试检查.json文件中的值是“0”还是“1” My.json文件: { "timetable": [ { "50mhour": "1", "on": "1" }, { "50hour": "2", "on": "1" }, { "50hour": "50min1", "on": "1" }, {
{
"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];
}
当然,我也创建了一本NSC字典
NSDictionary *tempDictionary= [self.get objectAtIndex:1];
我不太确定objectAtIndex
的值
检查值是“0”还是“1”的正确方法是什么?我知道IsequalString:
可能可以做到这一点,但我不确定如何做到
更新:
尝试将此作为以下答案的建议:
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仍然显示“不工作!”。您提供的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];
JSON的流程如下所示: 在JSON中有一个数组,在该数组中,第一个元素是dictionary 首先将JSON中的数据直接放入数组中。然后将数组的第一个对象放入字典,然后像这样得到值 从以下代码中获取On的值:
int on=[[[self.get objectAtIndex:0]objectForKey:@“on”]integerValue]代码>
int-value=[[self.get-objectAtIndex:0]objectForKey@“50小时”]integerValue]
不要害怕犯错误。运行它,看看会发生什么。打印值和/或设置断点并在调试器中遍历。isEqualToString:
方法用于比较两个NSString
对象。因为你有一个int
你需要:if(onValue==1){
@rmaddy谢谢,它工作了。但是由于某些原因,我仍然没有得到正确的值。它应该回答1,但是没有,JSON文件包含1作为值。我的JSON文件大得多,但是所有的值都非常相似。我尝试了你的代码(见更新的帖子)但它不起作用,它回答的是错误的接收器类型Int。我做错了什么吗?“on”的值密钥不是一个NSNumber
,而是一个NSString
。您的代码之所以有效,是因为NSString
恰好有一个intValue
方法,比如NSNumber
。谢谢@rmaddy的建议,代码可以工作,我认为我的.json文件有点出错,xcode应该给我正确的消息(我再次更新了我的代码,希望您能看一看)。此外,我的JSON文件不仅包含一个元素,它还包含更多元素。如果我是对的,请参阅更新的帖子。@Timothy,您能在控制台的调试器/日志中看到[[self.get objectAtIndex:0]objectForKey:@“on”]
?如果分配给int
变量,请使用intValue
。如果使用integerValue
,则变量的类型应为NSInteger
。