2013-02-16 135 views
-1

我用下面的代碼JSON使用解析IOS

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:response 
                options:NSJSONReadingAllowFragments               
                 error:&err]; 

首先我要加2個選項NSJSONReadingAllowFragments,並NSJSONReadingMutableContainers

如果我只NSJSONReadingMutableContainers使用的代碼會崩潰

現在如果響應只是字符串真或假,如何比較NSArray的值爲字符串「假」,例如

我不能說前充足的[jsonArray objectatindex:0]

任何想法如何使我的代碼足夠的這樣 - 智能,如果只有響應對象或只是字符串

+0

你可以檢查這個數組的長度。如果長度爲1,則再次檢查索引爲0的數組的值是否爲真/假。 – 2013-02-16 13:08:04

+0

我無法檢查計數,它也會崩潰 – AMH 2013-02-16 13:11:10

+0

首先檢查'jsonArray'是否爲零。如果是檢查'err'。機會是「響應」無效,NSLog「響應」並確保它是有效的json。基本的調試,檢查輸入。 – zaph 2013-02-16 13:16:12

回答

1

的陣列響應檢查類類型工作之前。

id jsonObject = [NSJSONSerialization JSONObjectWithData:response 
               options:NSJSONReadingAllowFragments               
                error:&err]; 

if ([jsonObject isKindOfClass:[NSArray class]]) { 
    // Do stuff for array. 
} 
else if ([jsonObject isKindOfClass:[NSDictionary class]]) { 
    // Do stuff for dictionary 
} 

else if ([jsonObject isKindOfClass:[NSString class]]) { 
    // Do stuff for string 
} 
+0

什麼是你的意思是由jsonData,是它的jsonArray,也如何添加多個選項 – AMH 2013-02-16 13:26:55

+0

看到我的編輯。 jsonArray就像jsonObject,我有改變djsonData與迴應 – 2013-02-16 13:35:46

+0

它的__NSCFString類型如何提取它的數據我的意思是我不能說isequal字符串或任何其他數據 – AMH 2013-02-16 13:39:56

0

返回JSON是一個NSString片段,count是無效的字符串。更改退貨類型:

NSString *jsonString = [NSJSONSerialization JSONObjectWithData:response 
                options:NSJSONReadingAllowFragments               
                 error:&err]; 

NSLog(@"jsonArray: %@, length: %d", jsonString, jsonString.length); 

然後根據字符串進行任何操作。

通常JSON是一個數組或字典,在這種情況下,它是一個字符串,可能是JSON格式不正確。