2011-05-23 22 views
0

我有這個JSON字符串如何在Objective-C

{ 
    "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/", 
    "city": [ 
     { 
      "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/", 
      "agencyCollection": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/agencyCollection/" 
      }, 
      "codecit": "ABJ", 
      "country": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/country/" 
      }, 
      "namecit": "ABIDJAN" 
     }, 
     { 
      "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/", 
      "agencyCollection": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/", 
       "agency": [ 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/3/" 
        }, 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/4/" 
        } 
       ] 
      }, 
      "codecit": "ALG", 
      "country": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/country/" 
      }, 
      "namecit": "ALGER" 
     }, 
     { 
      "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/", 
      "agencyCollection": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/", 
       "agency": [ 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/5/" 
        }, 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/6/" 
        } 
       ] 
      }, 
      "codecit": "AMS", 
      "country": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/country/" 
      }, 
      "namecit": "AMSTERDAM" 
     } 
    ] 
} 

我想分析它,我寫了這個代碼解析JSON

NSString *myJSON = [[NSString alloc] initWithContentsOfFile:responseString encoding:NSUTF8StringEncoding error:NULL]; 
NSDictionary *json = [myJSON JSONValue]; 
//NSLog(responseString); 
NSArray *citysList = [json objectForKey:@"city"]; 
NSLog(@"ok"); 
NSLog(@" number of element : %@", [citysList count]); 

但我有0號元素,請幫助

回答

1

邁克爾是對的。這裏有一個更詳細的答案:

initWithContentsOfFile需要一個包含文件路徑的字符串(例如「/users/mehdi/documents/myFile.txt」)。您似乎正在傳遞實際的JSON字符串,這不是文件路徑。因此,initWithContentsOfFile可能會返回nil

選中此問:

if (myJSON == nil) NSLog(@"myJSON variable == nil!"); 

如果是零,那麼你的代碼也設置jsoncitysList爲零。

試試這個:

NSDictionary *json = [responseString JSONValue]; 
NSArray *citysList = [json objectForKey:@"city"]; 
NSLog(@" number of element : %d", [citysList count]); 
1

你正在做一個initWithContentsOfFile,但傳遞一個字符串。你有沒有試過簡單的[responseString JSONValue]?您的代碼表明,responseString對您要打開的文件具有PATH,而不是您的完整響應字符串本身。

+0

啊是的,這是真的,謝謝 – user567 2011-05-24 01:55:33