How do I parse JSON with Objective-C?

前端 未结 5 1660
暖寄归人
暖寄归人 2020-11-22 07:18

I am new to iPhone. Can anyone tell me the steps to follow to parse this data and get the activity details, first name, and last name?

{
    \"#error\": fals         


        
5条回答
  •  眼角桃花
    2020-11-22 08:06

    With the perspective of the OS X v10.7 and iOS 5 launches, probably the first thing to recommend now is NSJSONSerialization, Apple's supplied JSON parser. Use third-party options only as a fallback if you find that class unavailable at runtime.

    So, for example:

    NSData *returnedData = ...JSON data, probably from a web request...
    
    // probably check here that returnedData isn't nil; attempting
    // NSJSONSerialization with nil data raises an exception, and who
    // knows how your third-party library intends to react?
    
    if(NSClassFromString(@"NSJSONSerialization"))
    {
        NSError *error = nil;
        id object = [NSJSONSerialization
                          JSONObjectWithData:returnedData
                          options:0
                          error:&error];
    
        if(error) { /* JSON was malformed, act appropriately here */ }
    
        // the originating poster wants to deal with dictionaries;
        // assuming you do too then something like this is the first
        // validation step:
        if([object isKindOfClass:[NSDictionary class]])
        {
            NSDictionary *results = object;
            /* proceed with results as you like; the assignment to
            an explicit NSDictionary * is artificial step to get 
            compile-time checking from here on down (and better autocompletion
            when editing). You could have just made object an NSDictionary *
            in the first place but stylistically you might prefer to keep
            the question of type open until it's confirmed */
        }
        else
        {
            /* there's no guarantee that the outermost object in a JSON
            packet will be a dictionary; if we get here then it wasn't,
            so 'object' shouldn't be treated as an NSDictionary; probably
            you need to report a suitable error condition */
        }
    }
    else
    {
        // the user is using iOS 4; we'll need to use a third-party solution.
        // If you don't intend to support iOS 4 then get rid of this entire
        // conditional and just jump straight to
        // NSError *error = nil;
        // [NSJSONSerialization JSONObjectWithData:...
    }
    

提交回复
热议问题