1

リモートWebサービスからJSONデータを読み取ることになっているアプリを書いています。URLは「something.action」の形式です。

dataWithContentsofURLを使用してサービスからJSOnデータをダウンロードしましたが、この関数が一部のデータを返すことがわかりました。

このデータを使用して関数NSJSONSeraiizationを呼び出しますが、これの応答はnullです。

基本的に、私はhttp://www.raywenderlich.com/5492/working-with-json-in-ios-5で提供されているコードを使用しています。唯一の違いは、リモートサーバーからデータをフェッチしていて、URLが「something.action」の形式であるということです。

ここで何が悪いのか理解できません。

4

2 に答える 2

1

http://jsonviewer.stack.hu/などの JSON ビューアーをチェックして、返された JSON が正しいかどうかを確認します。

受け取った NSData から取得した文字列の NSLog を実行し、ビューアで使用します。問題がある場合は、オブジェクトがシリアル化されていない理由がわかります。

于 2012-09-14T13:21:24.027 に答える
0

クラスをチェックする場合は、取得する応答が適切にフォーマットされたJSONファイルであることを確認してください。

NSError *jsonError = nil;
NSJSONSerialization *myJSONObject = [NSJSONSerialization JSONObjectWithData:theNSDataObained options:NSJSONReadingMutableContainers error:&jsonError];

if(jsonError != nil){
    NSLog(@"JSON Error: %@", jsonError);
    return;
}

//An NSJSONSerialization object will either be an NSDictionary or 
//an NSArray, figure out what it is: 

NSLog(@"JSON class is: %@", [myJSONObject class]);

//if it's a NSDictionary:
if([myJSONObject isKindOfClass:[NSDictionary class]]){
    NSDictionary *myJSONDictionary = (NSDictionary *) myJSONObject;
    for(id key in myJSONDictionary){
        id value = [myJSONDictionary valueForKey:key];
        [value doStuff];
    }
} 
else //if it's a NSArray....
于 2012-09-14T14:02:47.437 に答える