1

外部 API にリクエストを送信し、SBJson パーサーでレスポンスを解析しています。ただし、応答が長すぎて、どういうわけかごちゃごちゃになっているのではないかと思います。

NSMutableData *receivedData;mainviewcontroller.h ファイルで、mainviewcontroller.m ファイルの接続メソッドで使用できるように設定 しました。

ただし、接続の読み込みが完了したら、次を実行します。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    NSArray *allData = [dataString JSONValue];
}  

ただし、JSON が適切にフォーマットされていないというエラーが多数表示されます。そのため、JSON を見ると非常に長いのですが、あちこちに問題があります...たとえば、以下の「updated_at」です。

  {
            "id": 7844333,
            "position": 3,
            "content": "Cell height is off by 5 pixels",
            "created_at": "2012-06-04T20:31:30-05:00",
            "updated_at": "2ator": {
                "id": 98258,
                "name": "Brian"
            }

上記で発生したと思うのは、updated at の値が「2012-06...etc」で、次のキー値項目が Creator : { id, name } になるということですが、どうにかして update at.

同様の問題を抱えている人はいますか?解析される前に dataString を nslog アウトするため、問題は JSONValue にあるとは思いません。JSON エラーが見つかります。

つまり、これNSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];は単なる長い文字列ですが、ごちゃごちゃしているため、悪い JSON が含まれています。

4

2 に答える 2

-1

あなたのjsonが間違っていると思います。json ファイルを : http://jsonlint.com/に入れるだけであることを確認するには

有効な場合:

SBJSON フレームワーク クラスをプロジェクトにインポートします。次のコードを試してください。

 SBJSON *parser=[[SBJSON alloc]init];

NSDictionary * dictionary = [parser objectWithString:responseString];

これにより、次を使用して辞書にデータが提供されます。

NSString *firstParseData=[dictionary objectForKey:@"your key"];

データを取得できます。これがあなたのケースでうまくいくことを願っています。

于 2012-06-05T07:16:22.650 に答える