使用objective-c解析json

时间:2013-10-11 06:48:47

标签: objective-c json

我需要帮助使用objective-c

解析json

这是我的json:

{
    "days": [
        {
            "reference": "13L6-A67-1",
            "period": "",
            "dayinit": "4",
            "hourinit": "9",
            "minuteinit": "30",
            "dayend": "4",
            "hourend": "10",
            "minuteend": "30",
            "totalattendance": "5",
            "currentattendance": "5",
            "teacher_surname": "jones",
            "teacher_forenames": "Carol",
            "room": "C109"
        },
        {
            "reference": "13NAPUSD-A1",
            "period": "",
            "dayinit": "3",
            "hourinit": "10",
            "minuteinit": "45",
            "dayend": "3",
            "hourend": "11",
            "minuteend": "45",
            "totalattendance": "3",
            "currentattendance": "3",
            "teacher_surname": "Carol",
            "teacher_forenames": "Nicola",
            "room": "M139"
        },
        {
            "reference": "13NASUWO-X1",
            "period": "",
            "dayinit": "3",
            "hourinit": "14",
            "minuteinit": "40",
            "dayend": "3",
            "hourend": "15",
            "minuteend": "5",
            "totalattendance": "0",
            "currentattendance": "0",
            "teacher_surname": "",
            "teacher_forenames": "",
            "room": ""
        },
        {
            "reference": "13NASUWO-X1",
            "period": "",
            "dayinit": "5",
            "hourinit": "13",
            "minuteinit": "35",
            "dayend": "5",
            "hourend": "14",
            "minuteend": "0",
            "totalattendance": "0",
            "currentattendance": "0",
            "teacher_surname": "",
            "teacher_forenames": "",
            "room": ""
        }]}

然后我需要将它过滤到不同的“Dayinit”键的单独数组中。 我只是不知道从哪里开始。

到目前为止,我只在youtube上找到解析json的关键视频,但没有一个显示如何在解析数据后过滤数据

3 个答案:

答案 0 :(得分:9)

你需要根据你的json获得密钥。 使用该键,您将获得数据。

 NSURL * url=[NSURL URLWithString:@"http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo"];   // pass your URL  Here.

        NSData * data=[NSData dataWithContentsOfURL:url];

        NSError * error;

        NSMutableDictionary  * json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error];

        NSLog(@"%@",json);


        NSMutableArray * referanceArray=[[NSMutableArray alloc]init];

        NSMutableArray * periodArray=[[NSMutableArray alloc]init];

        NSArray * responseArr = json[@"days"];

        for(NSDictionary * dict in responseArr)
        {

            [referanceArray addObject:[dict valueForKey:@"reference"]];
            [periodArray addObject:[dict valueForKey:@"period"]];

        }


        NSLog(@"%@",referanceArray);   // Here you get the Referance data
        NSLog(@"%@",periodArray);      // Here you get the Period data

这里你用了

[referanceArray addObject:[dict valueForKey:@"reference"]];

使用所有这些键来获取数据。

试试这段代码。

答案 1 :(得分:0)

你可以通过使用`通过Json值进行迭代来获得它。

仅供参考:

ContentDict = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:nil];

days = [ContentDict objectForKey:@"days"];
    // 3. iterate the array; each element is a dictionary...
                    for (NSDictionary *lesson in days)
                    {

                        NSString *content = [lesson objectForKey:@"reference"];
                        NSString *content2 = [lesson objectForKey:@"dayinit"]; 
                        // ........
                           ........
                           .......

                        NSLog(@"Reference  : %@", content);

                    } 

答案 2 :(得分:0)

你可以像那样解析你的json

  NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil];
  NSMutableArray *jsonParseArray = [[NSMutableArray alloc] initWithArray:[jsonDic objectForKey:@"days"]];

然后将带有objectAtIndex:的数组中的每个元素放入NSDictionary。

NSDictionary *selectedDic = [jsonParseArray objectAtIndex:0];

只需使用objectForKey您的密钥

即可获得字典的价值
        "reference": 
        "period": 
        "dayinit": 
        "hourinit": 
        "minuteinit": 
        "dayend": 
        "hourend": 
        "minuteend": 
        "totalattendance":
        "currentattendance":
        "teacher_surname": 
        "teacher_forenames": 
        "room":