如何在JSON数据中获取第一个对象名称?

时间:2015-07-17 07:11:01

标签: ios objective-c json

我的服务器人员正在向我发送消息对象中不同请求的不同对象的JSON数据。就像在某些请求中一样:

{
            "message": {
                "series": {...}
            },
            "boolean": true
}

并在某些请求中:

{
            "message": {
                "movie": {...}
            },
            "boolean": true
}

两个对象都有不同的数据。所以,我想得到第一个对象的名称,它是消息对象中的“电影”或“系列”,这样我就可以在其上创建一个if else条件来获取内部数据。

    NSString *myRequestString = [NSString stringWithFormat:@"getVideo=1"];
    // Create Data from request
    NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: url]];
    // set Request Type
    [request setHTTPMethod: @"POST"];
    // Set content-type
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    // Set Request Body
    [request setHTTPBody: myRequestData];
    // Now send a request and get Response
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
    // Log Response
    NSString *response = [[NSString alloc] initWithBytes:[returnData bytes] length:[returnData length] encoding:NSUTF8StringEncoding];
    NSLog(@"Response: %@",response);

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableLeaves error:nil];

//    for(NSDictionary *dict in firstObject){
//        NSLog(@"%@",[dict objectForKey:@"name"]);
//    }

3 个答案:

答案 0 :(得分:2)

dict = [dict objectForKey:@"message"];
if([dict objectForKey:@"movie"]){
//Your dictionary has key movie, parse accordingly
}
else if ([dict objectForKey:@"series"]){
 //Your dictionary has key series, parse accordingly
}

希望这有帮助

答案 1 :(得分:0)

NSDictionary中没有“第一个对象”这样的东西。内容未订购。

您可以通过尝试访问它们来轻松检查是否存在对象/密钥对:

id value = dict[@"someKey"];
如果nil没有对象,

会为您提供存储的对象或@"someKey"

您还可以使用

遍历完整的词典
- enumerateKeysAndObjectsUsingBlock:

答案 2 :(得分:0)

对于当前场景,您可以按照以下方式获取消息的第一个键:

MM

但是,我建议使用不同的api端点获取不同的数据。