以下語句是正確的,還是我錯過了某些內容?從NSJSONSerialization返回的對象可能會有所不同
你必須檢查的NSJSONSerialization
返回的對象,看它是否是一個字典或數組 - 你可以有
data = {"name":"joe", "age":"young"}
// NSJSONSerialization returns a dictionary
和
data = {{"name":"joe", "age":"young"},
{"name":"fred", "age":"not so young"}}
// returns an array
每種類型都有不同的訪問方法,如果使用錯誤的話會中斷。 例如:
NSMutableArray *jsonObject = [json objectAtIndex:i];
// will break if json is a dictionary
所以你必須做這樣的事情 -
id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers error:&error];
if ([jsonObjects isKindOfClass:[NSArray class]])
NSLog(@"yes we got an Array"); // cycle thru the array elements
else if ([jsonObjects isKindOfClass:[NSDictionary class]])
NSLog(@"yes we got an dictionary"); // cycle thru the dictionary elements
else
NSLog(@"neither array nor dictionary!");
我有一個很好看通堆棧溢出和蘋果文檔和其他地方,找不到上述任何直接確認。
你沒有提到你的代碼出現了什麼問題。 –
問題是,如果您返回字典並使用數組方法訪問它,則會引發異常。我認爲你需要檢查返回對象類型來解決這個問題,但是要確認這是正確的方法。 – user1705452