0

我正在尝试检查我的 .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 仍显示“不起作用!”。

4

2 回答 2

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];
于 2013-06-17T18:48:53.670 回答
0

你的 JSON 流程是这样的:

您有 JSON 格式的数组,在该数组中,第一个元素是字典。

您首先将 JSON 中的数据直接获取到数组中。然后将 Array 的第一个对象放入字典中,然后获取这样的值

从此代码中获取 On 的值:

int on = [[[self.get objectAtIndex:0] objectForKey:@"on"] integerValue];

int value = [[[self.get objectAtIndex:0] objectForKey@"50hour"] integerValue]

于 2013-06-17T18:49:16.417 回答