2012-02-02 88 views
0

這裏是我的問題:JSON NSDictionary到NSArray給我空NSArray? :(

INPUT(從某個網站):

{"error":[],"results":{"count":2,"data":[{"ART_ID":"656","ART_NAME":"Noir D\u00e9sir","ART_PICTURE":".....","NB_ALBUM":"15","NB_FAN":"90176","SMARTRADIO":"1","URL_REWRITING":"noir-desir"},{"ART_ID":"167225","ART_NAME":"LMFAO","ART_PICTURE":"....","NB_ALBUM":"17","NB_FAN":"122408","SMARTRADIO":"1","URL_REWRITING":"lmfao"}],"total":2}} 

所以,一旦我有我使用了幾個JSON類:

NSError* jsonError = nil; 
//responseData contains my json feed 
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonError]; 

NSLog(@"responseDictionary : \n%@\n--------\n", [dict description]); 

爲了獲得以下內容:

{ 
    error =  (
    ); 
    results =  { 
     count = 2; 
     data =   (
         { 
       "ART_ID" = 656; 
       "ART_NAME" = "Noir D\U00e9sir"; 
       "ART_PICTURE" = 17b0a9c3defcf8c3eef943759606b3f4; 
       "NB_ALBUM" = 15; 
       "NB_FAN" = 90176; 
       SMARTRADIO = 1; 
       "URL_REWRITING" = "noir-desir"; 
      }, 
         { 
       "ART_ID" = 167225; 
       "ART_NAME" = LMFAO; 
       "ART_PICTURE" = 72a09b9202da38afae077e80c7598212; 
       "NB_ALBUM" = 17; 
       "NB_FAN" = 122408; 
       SMARTRADIO = 1; 
       "URL_REWRITING" = lmfao; 
      } 
     ); 
     total = 2; 
    }; 
} 

在這裏,我真的沒有任何專業瑕疵......但現在,我想獲得這個NSDictionary中的「數據」字段。所以,我只是創建一個新:

NSDictionary* resultField = [NSDictionary dictionaryWithDictionary:[dict objectForKey:@"results"]]; 

至極包含:

{ 
    count = 2; 
    data =  (
       { 
      "ART_ID" = 656; 
      "ART_NAME" = "Noir D\U00e9sir"; 
      "ART_PICTURE" = 17b0a9c3defcf8c3eef943759606b3f4; 
      "NB_ALBUM" = 15; 
      "NB_FAN" = 90176; 
      SMARTRADIO = 1; 
      "URL_REWRITING" = "noir-desir"; 
     }, 
       { 
      "ART_ID" = 167225; 
      "ART_NAME" = LMFAO; 
      "ART_PICTURE" = 72a09b9202da38afae077e80c7598212; 
      "NB_ALBUM" = 17; 
      "NB_FAN" = 122408; 
      SMARTRADIO = 1; 
      "URL_REWRITING" = lmfao; 
     } 
    ); 
    total = 2; 
} 

現在我想找到自己的「數據」字段,現在是一個JSONArray(不是的NSDictionary了...) :

NSArray* dataField = [[NSArray alloc] initWithArray:[dict objectForKey:@"data"]]; 

但在那之後我的dataField是空的......我的意思是這樣的:

NSArray* dataField = [[NSArray alloc] initWithArray:[dict objectForKey:@"data"]]; 
if (!dataField || ![dataField isKindOfClass:[NSArray class]]) { 
    NSLog(@"Pb parsing DATA field as NSArray..."); 
} 
NSLog(@"dataField : \n%@\n--------\n", [dataField description]); 

不告訴我,因爲它正確格式化的NSArray的錯誤,但我打印如下:

2012-02-02 14:08:52.315 myapp[5235:f803] dataField : 
(
) 

我現在很失落,我真的不知道發生了什麼......如果你們有關於這個問題的任何線索我會很高興如果你能幫助我!

感謝

回答

4

您從第一字典(字典),你應該把它從resultField走的是 「數據」 數組:

NSArray* dataField = [[NSArray alloc] initWithArray:[resultField objectForKey:@"data"]]; 
+0

OMG!謝謝,我甚至都沒有看到......該死的複製粘貼:'( – Cehm 2012-02-02 13:49:45

+0

它的好,你可以把它標記爲已回答? – 2012-02-02 13:54:12

+0

我的壞...我馬上就可以做到這一點 – Cehm 2012-02-02 14:02:32