60

私はこの方法を使用しました、

NSDictionary *jsonObject=[NSJSONSerialization 
       JSONObjectWithData:jsonData 
                  options:NSJSONReadingMutableLeaves 
                    error:nil];
NSLog(@"jsonObject is %@",jsonObject);

「jsonObjectisnull」を出力しています。
「error:nil」に問題はありますか?
URLや接続方法を使用していません。
jsonファイルがあり、それをテーブルに表示したいと思います。

4

5 に答える 5

155

次のコードを試してください。

NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData
                                                     options:kNilOptions 
                                                       error:&error];

NSArray* latestLoans = [json objectForKey:@"loans"];

NSLog(@"loans: %@", latestLoans);
于 2012-09-26T14:26:25.437 に答える
9

誰かが迅速なコードを見るためにここにいる場合に備えて:

NSData から NSDictionary へ

let dictionary:NSDictionary = NSKeyedUnarchiver.unarchiveObjectWithData(jsonData)! as NSDictionary

NSData から NSString へ

let resstr = NSString(data: res, encoding: NSUTF8StringEncoding)
于 2015-10-27T06:28:46.923 に答える
6

json の入力を確認してください。ルート要素が辞書でも配列でもない可能性がありますか? ドキュメントには、この場合、オプションとして NSJSONReadingAllowFragments を指定する必要があると書かれています。

#import <Foundation/Foundation.h>

int main(int argc, char *argv[]) {
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

    NSData *jsonData = [@"{ \"key1\": \"value1\" }" dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *jsonObject=[NSJSONSerialization 
           JSONObjectWithData:jsonData 
                      options:NSJSONReadingMutableLeaves 
                        error:nil];
    NSLog(@"jsonObject is %@",jsonObject);

    [p release];
}

出力:

2012-09-26 16:06:51.610 Untitled[19164:707] jsonObject is {
    key1 = value1;
}
于 2012-09-26T14:09:37.587 に答える
0
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

これは、トップの投稿のより簡潔なバージョンです。

于 2016-03-25T21:22:50.647 に答える