0

URLからの私のjson応答は次のとおりです。

[
 {"status":0,
  "id":"26",
   "content":"See info field for info",
   "time":1347565292761,
    "info": {"id":"26",
    "name":"Ruti",
    "twitterPageFollowers":null,
     "facebookPageLikes":null,
     "activeEmailClients":1}
  }
 ]

それから次の文字列を抽出する必要があります。

twitterPageFollowers
facebookPageLikes
activeEmailClients

どうすればいいですか?

このように構文解析してみました

NSData *urlData=[NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:nil error:nil ];
    NSString *returnString=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
    NSData *jsonData = [returnString dataUsingEncoding:NSUTF8StringEncoding];
    NSArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
    NSDictionary *response = [json objectAtIndex:0];
    NSString *info = [response objectForKey:@"info"];
    NSData *businessInfoString = [info dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *businessInfo =
    [NSJSONSerialization JSONObjectWithData: businessInfoString
                                    options: NSJSONReadingMutableContainers
                                      error: nil];

返されるデータは問題ありませんが、情報フィールドから最後のNSDictionaryを作成するために、[__ NSCFDictionary dataUsingEncoding:unrecognizedselectorがインスタンスに送信されます。上記のフィールドを取得するための何が問題になっていますか、またはより短い方法は何ですか?

4

1 に答える 1

1

を使用して「info」フィールドを取得すると[response objectForKey:@"info"];、すでにNSDictionary!(ではなくNSString)。

そのため、このオブジェクトを呼び出そうとするとdataUsingEncoding:(信じていたが、そうNSStringであるようにNSDictionary)、例外が発生します。

"info"キーの値を取得してからNSDataJSONObjectに変換し、JSONObjectに戻す必要はありません。これは、すでにJSONObjectであるため、つまり、NSDictionaryあなたの場合はです。なぜわざわざそれを前後に変換しようとしているのに、コードの最後に期待する辞書が[response objectForKey:@"info"];すでに返されているのでしょうか。businessInfo

于 2012-09-13T20:16:42.733 に答える