2012-06-04 38 views
0

iPhone代碼如何獲得低於響應數組?這裏我需要存儲內容「Id值」,「LastUpdated值」和「標題」這三個值需要存儲在3個不同的數組中如何可能?如何實現JSON解析獲取響應到NSArray的代碼?

這裏是迴應:

[ 
    { 
     "Contents": [ 
      { 
       "Id": 381, 
       "LastUpdated": "/Date(1338347251003+0000)/", 
       "Title": "Forrester Study - Total Economic Impact of Lync", 
       "Url": "http://infra2apps.blob.core.windows.net/eventapp/Forrester Study - Total Economic Impact of Lync_booth1.pdf" 
      } 
     ], 
     "Id": 1, 
     "ImageUrl": "http://infra2apps.blob.core.windows.net/eventapp/Lync.png", 
     "Name": "Unified Communications & Collaborations", 
     "Sessions": [ 
      { 
       "Description": "Microsoft Lync delivers Unified Communications to help people connect in new ways, anytime, anywhere. Learn how HP and Microsoft are helping customers transform their business infrastructure and gain greater productivity by making every communication an interaction that is more collaborative and engaging.", 
       "EndDate": "/Date(1338922800000+0000)/", 
       "FriendlyName": "TB3257", 
       "Id": 1, 
       "Location": "TBD", 
       "Speakers": [ 
        { 
         "Company": "Microsoft", 
         "Email": "[email protected]", 
         "Name": "Ashima Singhal", 
         "Title": "Group Marketing Manager, Lync" 
        }, 
        { 
         "Company": "HP", 
         "Email": "[email protected]", 
         "Name": "Dragana Beara", 
         "Title": "HP" 
        } 
       ], 
       "StartDate": "/Date(1338920100000+0000)/", 
       "Title": "Connecting People in New Ways with Microsoft Lync" 
      } 
     ] 
    }, 
    { 
     "Contents": [ 
      { 
       "Id": 385, 
       "LastUpdated": "/Date(1338347251143+0000)/", 
       "Title": "Windows 8 Consumer Preview - Product Guide - Business", 
       "Url": "http://infra2apps.blob.core.windows.net/eventapp/Windows 8 Consumer Preview - Product Guide - Business_booth2.pdf" 
      }, 
      { 
       "Id": 383, 
       "LastUpdated": "/Date(1338347251080+0000)/", 
       "Title": "Mitigating Risk - Why Sticking with Windows XP is a Bad Idea", 
       "Url": "http://infra2apps.blob.core.windows.net/eventapp/Mitigating Risk - Why Sticking with Windows XP is a Bad Idea - IDC - May 2012_booth2.pdf" 
      } 
     ], 
     "Id": 2, 
     "ImageUrl": "http://infra2apps.blob.core.windows.net/eventapp/Windows-brand.png", 
     "Name": "Windows the right choice for business", 
     "Sessions": [ 
      { 
       "Description": "Microsoft and HP are partnering together to migrate customers to Windows 7 while working closely together to build new Windows 8 products that will easily integrate into a Windows 7 environment. This session provides insight on how these new offerings will provide enterprise grade solutions with no compromise business devices that increase productivity, security, and manageability and the path to get there.", 
       "EndDate": "/Date(1338935400000+0000)/", 
       "FriendlyName": "TB3256", 
       "Id": 3, 
       "Location": "TBD", 
       "Speakers": [ 
        { 
         "Company": "Microsoft", 
         "Email": "[email protected]", 
         "Name": "Sara Nagy", 
         "Title": "Senior Account Manager - OEM" 
        } 
       ], 
       "StartDate": "/Date(1338932700000+0000)/", 
       "Title": "Preparing for Windows 8" 
      } 
     ] 
    }, 
    { 
     "Contents": [ 
      { 
       "Id": 382, 
       "LastUpdated": "/Date(1338347251043+0000)/", 
       "Title": "HP EDW Appliance Solution Brief", 
       "Url": "http://infra2apps.blob.core.windows.net/eventapp/HP EDW Appliance Solution Brief_booth3.pdf" 
      }, 
      { 
       "Id": 380, 
       "LastUpdated": "/Date(1338347250970+0000)/", 
       "Title": "HP DBCA Datasheet", 
       "Url": "http://infra2apps.blob.core.windows.net/eventapp/11475_DBCA-Datasheet_booth3.pdf" 
      } 
     ], 
     "Id": 3, 
     "ImageUrl": "http://infra2apps.blob.core.windows.net/eventapp/SQL.png", 
     "Name": "Enterprise Information Platform", 
     "Sessions": [ 
      { 
       "Description": "The Database Consolidation appliance integrates software and harware into a turnkey solution that creates tremendous opportunities to virtualize demanding applications requiring enterprise-class resiliency. This session will dive into this NEW Private Cloud Appliance, leveraging virtualization and tuned and balanced infrastructure to deliver Private Cloud capabilities. We’ll go into detail including how to inventory and gather performance characteristics to provide detailed appliance-specific sizing and placement guidance using the MAP toolkit, how the appliance architecture enables high IO performance, isolation. and resiliency, and into details around core operational capabilities such as P-to-V and self-service workflow-enabled provisioning of new instances. Also, we will cover advanced capabilities such as chargeback, sustained engineering (upgrades and patching), load balancing with Live Demos that will show off the core capabilities of the appliance.", 
       "EndDate": "/Date(1339017300000+0000)/", 
       "FriendlyName": "TB3323", 
       "Id": 5, 
       "Location": "TBD", 
       "Speakers": [ 
        { 
         "Company": "Microsoft", 
         "Email": "[email protected]", 
         "Name": "Mark Mortimore", 
         "Title": "Senior Program Manager, SQL Server Appliances" 
        } 
       ], 
       "StartDate": "/Date(1339014600000+0000)/", 
       "Title": "Cloud on your terms - Database Consolidation Appliance" 
      }, 
      { 
       "Description": "Leveraging virtual and scalable infrastructure - 100s of servers can be efficiently, reliably, and manageably consolidated. This session will dive into the NEW DBC Appliance, leveraging virtualization and tuned and balanced infrastructure. Using demos, we will show all phases of consolidation including how to assess environments using the MAP toolkit, details around core operational capabilities such as P-to-V and self-service workflow-enabled provisioning of new fully configured servers. Also, we will cover advanced capabilities such as chargeback, s load balancing… ", 
       "EndDate": "/Date(1339006800000+0000)/", 
       "FriendlyName": "DT3324", 
       "Id": 6, 
       "Location": "TBD", 
       "Speakers": [ 
        { 
         "Company": "Microsoft", 
         "Email": "[email protected]", 
         "Name": "Mark Mortimore", 
         "Title": "Senior Program Manager, SQL Server Appliances" 
        } 
       ], 
       "StartDate": "/Date(1339005600000+0000)/", 
       "Title": "Database Consolidation & Private Cloud Appliance" 
      } 
     ] 
    }, 
    { 
     "Contents": [], 
     "Id": 4, 
     "ImageUrl": "http://infra2apps.blob.core.windows.net/eventapp/WinStorageSvr.png", 
     "Name": "Windows Storage Server", 
     "Sessions": [] 
    }, 
    { 
     "Contents": [], 
     "Id": 5, 
     "ImageUrl": "http://infra2apps.blob.core.windows.net/eventapp/SQL.png", 
     "Name": "Platform Modernization/Migration", 
     "Sessions": [ 
      { 
       "Description": "Microsoft and HP engineering have collaborated on delivering mission critical systems which outperform historic tier 1 platforms. Although many companies rely on the combination of HP and Microsoft for Mission Critical workloads, there has been a lingering doubt that the combined platform can scale to the needs of large enterprises currently relying on IBM Mainframes. This session will describe a signficant study just completed that puts to rest the myths that mainframes are the only platform that scales, can support high-IO and delivery mission critical capabilities. Finally an apples to apples comparison that you can use as you modernize your IT enviornment.", 
       "EndDate": "/Date(1339093200000+0000)/", 
       "FriendlyName": "DT3471", 
       "Id": 8, 
       "Location": "TBD", 
       "Speakers": [ 
        { 
         "Company": "Microsoft", 
         "Email": "[email protected]", 
         "Name": "Scott Rosenbloom", 
         "Title": "SSP Platform Modernization" 
        } 
       ], 
       "StartDate": "/Date(1339092000000+0000)/", 
       "Title": "Mainframe Alternative: Windows Server, SQL Server and HP DL 980" 
      } 
     ] 
    } 
] 
+0

@Logical - 在註釋中,僅支持鏈接的內聯語法:'[The title](http://example.com/)' – vikingosegundo

回答

1

對不起,不解釋下面的代碼由於時間問題

-(void) dataRecieved: (NSDictionary *) receivedDict 
{ 
NSArray *contentsArray = [receivedDict objectForKey:@"Contents"]; 
NSArray *sessionsArray = [receivedDict objectForKey:@"Sessions"]; 

for (NSDictionary *contentsDict in contentsArray) 
    { 
     Contents *objContents = [[Contents alloc]init]; 
     objContents.id = [contentsDict objectForKey:@"ID"]; 
     objContents.lastUpdate = [contentsDict objectForKey:@"LastUpdate"]; 
     objContents.title = [contentsDict objectForKey:@"Title"]; 

     [contentObjectsArray addObject: objContents]; 
    } 

    for (NSDictionary *sessionsDict in sessionsArray) 
    { 
     Sessions *objSessions = [[Sessions alloc]init]; 
     objSessions.id = [contentsDict objectForKey:@"ID"]; 
     objSessions.endDate = [contentsDict objectForKey:@"EndDate"]; 

     NSArray *speakersArray = [receivedDict objectForKey:@"Speakers"]; 

     for (NSDictionary *spearkersDict in speakersArray) 
     { 
      Speakers *objSpeakers = [[Speakers alloc]init]; 
      objSpeakers.title = [spearkersDict objectForKey:@"Title"]; 
      [objSessions.speakerssObjectsArray addObject: objSpeakers]; 
     } 

     [sessionsObjectsArray addObject:objSessions]; 
    } 
} 
3

您的回答是沒有有效的JSON。你不能用標準的JSON解析器解析它。 (您可以使用http://jsonlint.com/進行驗證。)

//編輯: 所以編輯後,您確實有有效的JSON數據。要解析它,你可以使用任何你發現的JSON解析框架(一個流行的框架,例如json-framework)。

但是,如果您只爲iOS5構建,則可以使用系統庫NSJSONSerialization

1

如果你的目標iOS 5或更高版本,JSON支持是本地的,所以你不需要添加任何外部庫或實現解析器。你只需使用NSJSONSerialization。

See the documentation

示例代碼:

NSError* error = nil; 

NSArray* parsed = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 

if(!error) { 
    //Process here 
} 

如果你的目標IOS版本低於iOS 5的那麼JSON解析本身並不支持,你必須自己實現解析器,或使用外部庫適合您的需求。庫 例子: SBJSON

1

使用SBJsonParser解析JSON,你可以使用這個link直觀瞭解JSON,這樣你就可以知道哪裏會使用哪個數據結構,其餘的就像@imsult所說的那樣。