2013-08-06 22 views
0

我收到以下響應格式服務器的JSON格式,我已成功存儲在NSDictionary中。將應用程序名稱存儲在NSArray中,存儲在NSDictionary中的JSON數據

{ 
    "@companyName" = "MobileAPPSDeveloper"; 
    "@generatedDate" = "8/6/13 2:41 AM"; 
    "@version" = "1.0"; 
    application =  (

      { 
     "@apiKey" = 234FXPQB36GHFF2334H; 
     "@createdDate" = "2013-03-01"; 
     "@name" = FirstApp; 
     "@platform" = iPhone; 
    }, 
      { 
     "@apiKey" = 3PF9WDY234546234M3Z; 
     "@createdDate" = "2013-02-01"; 
     "@name" = SecondAPP; 
     "@platform" = iPhone; 
    }, 
      { 
     "@apiKey" = NXGQXM2347Y23234Q4; 
     "@createdDate" = "2013-05-22"; 
     "@name" = ThirdApp; 
     "@platform" = Android; 
    } 
); 

} 

這是我用過的方法。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    [self convertDataIntoDictionary:responseData]; 
} 

-(void)convertDataIntoDictionary:(NSData*)data{ 
    NSDictionary *dictionary; 
    if (data.length>0) { 
     NSError *parsingDataError; 
     dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&parsingDataError]; 

     if (parsingDataError) { 
      //   [ErrorAlert showError:parsingDataError]; 
      NSString *recievedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
      NSLog(@"Data Conversion Error When Parsing: %@", recievedString); 
     } 
    } 

    NSLog(@"Data back from server\n %@",dictionary); 
    NSArray *applicationDetails = dictionary[@"application"]; 

} 

我不能再走了嗎?

我想要在Array中獲得APPS的所有名稱。

任何幫助將不勝感激。

回答

1

解析JSON的基礎是:

{} - DIS表示字典
() - DIS代表陣列中的JSON

所以,有一個dictionary在根和裏面有一個密鑰application,其中一個Array

NSArray *applicationArray = [dictionary objectForKey:@"application"]; 
NSMutableArray *mutableAppNamesArray = [[NSMutableArray alloc]init]; 

這個數組裏面有各項指標在三個NSDictionary

for(NSDictionary *dict in applicationArray){ 
    NSString *appName = [dict objectForKey:@"@name"]; 
    NSLog(@"app name : %@", appName); 
    [mutableAppNamesArray addObject:appName]; 
} 

NSArray * appNamesArray = [NSArray arrayWithArray:mutableAppNamesArray]; 
+0

嗨Puneet謝謝你的回答!我會牢記這一點,並嘗試相應地轉換數據。會讓更新在幾分鐘內! – Nitya

+0

NSArray * appNamesArray = [[NSArray alloc] init]; NSArray沒有addobject:方法!如果我更改爲NSMutableArray它給我錯誤[__ NSArrayM insertObject:atIndex:]:對象不能爲零' ***第一次拋出調用堆棧: – Nitya

+0

對不起,我的壞。我沒有使用IDE。我編輯過。使用NSMutableArray而不是NSArray。如果你需要NSArray,你可以從NSMutableArray創建它。 –

0

我覺得這不是一個JSON格式正確。 JSON對象通常包含「:」而不是「=」

例子: -

{ 
products_id: "476", 
products_model: "XOLO Play", 
products_price: "15499.0000", 
products_image: "xolo-play-play-t1000-.jpg", 
products_date_available: null, 
products_last_modified: "2013-08-04 06:04:11", 
products_date_added: "2013-08-04 06:03:10", 
manufacturers_id: "17", 
products_status: "1", 
products_rating: null, 
category_id: "11" 
}, 
{ 
products_id: "18", 
products_model: "Nokia Lumia 820", 
products_price: "8990.0000", 
products_image: "samsung-galaxy-ace-duos-gsm-mobile-phone-large-1.jpg", 
products_date_available: null, 
products_last_modified: "2013-07-30 03:45:28", 
products_date_added: "2013-01-23 00:52:00", 
manufacturers_id: "2", 
products_status: "1", 
products_rating: "3", 
category_id: "11" 
}, 

但是,如果你仍然需要解析它,那麼你可能如下嘗試:

先進入陣列 由NSDictionary *array = [allValues objectForKey:@"application"];然後每個索引爲NSDictionary,然後對象爲鍵。如果它的服務器響應比嘗試使其處於正確的JSON格式。

+0

謝謝@Chad我會檢查這是否解決問題! – Nitya

+0

實際的服務器響應是:not = – Nitya

+0

比@Puneet ans肯定會幫助你:) –

相關問題