-1

次のコードを使用します

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

最初に 2 つのオプションを追加しNSJSONReadingAllowFragmentsNSJSONReadingMutableContainers

コードだけを使用NSJSONReadingMutableContainersするとクラッシュします

応答が単なる文字列 true または false の場合、たとえば NSArray の値を文字列 "false" と比較する方法

例えが言えない[jsonArray objectatindex:0]

応答のみがオブジェクトの配列または文字列のみの場合に、コードを十分にインテリジェントにする方法についてのアイデア

4

2 に答える 2

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
}
于 2013-02-16T13:18:40.333 に答える
0

返された JSON は、文字列NSStringcountは無効なフラグメントです。戻り値の型を変更します:

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

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

次に、文字列で必要なことを行います。

通常、JSON は配列または辞書です。この場合は文字列です。JSON が正しくフォーマットされていない可能性があります。

于 2013-02-16T13:42:37.877 に答える