0

私はアプリケーションのバックエンドとして Parse.com を使用しており、現在そこにデータを保存しています。

データは、ビデオ ゲーム コンソールのリストです。それを出力することはできましたが、JSON データではなく、大きな NSMutableArray が出力されます。

これは私のviewDidLoadです:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSURL *url = [NSURL URLWithString:@"https://api.parse.com/1/classes/Consoles"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setURL:url];
    [request setHTTPMethod:@"GET"];
    [request setValue:@"APPLICATION_ID" forHTTPHeaderField:@"X-Parse-Application-Id"];
    [request setValue:@"REST_API_KEY" forHTTPHeaderField:@"X-Parse-REST-API-Key"];

    NSError *error;

    id listOfConsoles = [NSJSONSerialization JSONObjectWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil] options:NSJSONReadingMutableContainers error:&error];

    NSLog(@"The list: %@", listOfConsoles);
}

出力:

The list: {
    results =     (
                {
            createdAt = "2013-03-21T07:26:04.149Z";
            name = PlayStation;
            objectId = vloIK0MZIA;
            updatedAt = "2013-03-21T07:26:04.149Z";
        },
                {
            createdAt = "2013-03-21T07:26:34.209Z";
            name = Wii;
            objectId = RIRpgbznlq;
            updatedAt = "2013-03-21T07:26:34.209Z";
        },
                {
            createdAt = "2013-03-21T07:26:39.391Z";
            name = Xbox;
            objectId = xBNgHtJbrV;
            updatedAt = "2013-03-21T07:26:39.391Z";
        }
    );
}

私が出力したいもの:

{
  "results" : [
    {
      "objectId" : "vloIK0MZIA",
      "updatedAt" : "2013-03-21T07:26:04.149Z",
      "createdAt" : "2013-03-21T07:26:04.149Z",
      "name" : "PlayStation"
    },
    {
      "objectId" : "RIRpgbznlq",
      "updatedAt" : "2013-03-21T07:26:34.209Z",
      "createdAt" : "2013-03-21T07:26:34.209Z",
      "name" : "Wii"
    },
    {
      "objectId" : "xBNgHtJbrV",
      "updatedAt" : "2013-03-21T07:26:39.391Z",
      "createdAt" : "2013-03-21T07:26:39.391Z",
      "name" : "Xbox"
    }
  ]
}

ところで

コードに別のNSDataがあるのはなぜですか:

NSData *JSONData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSJSONSerializationを次のように変更します。

id listOfConsoles = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:&error];

出力は次のようになります。

The list: {
    error = unauthorized;
}
4

3 に答える 3

1

最初のリストは、NSDictionary"results" という 1 つのキーを持つNSArrayですNSDictionaries

2番目のリストは同じものです..

編集 1.0:

明確にするために、2 番目の出力は JSON ですよね?簡単に言えば、ここをチェックして自分自身を検証してください。1 つ目は、 内にある出力された JSON ですNSObject。もちろん多少の差はあるでしょうが…

于 2013-03-21T10:49:10.883 に答える
0

私はばかだった。JSONデータが必要なときに、JSONを別のものに変換しようとしたことに気づきませんでした。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSURL *url = [NSURL URLWithString:@"https://api.parse.com/1/classes/Consoles"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setURL:url];
    [request setHTTPMethod:@"GET"];
    [request setValue:@"APPLICATION_ID" forHTTPHeaderField:@"X-Parse-Application-Id"];
    [request setValue:@"REST_API_KEY" forHTTPHeaderField:@"X-Parse-REST-API-Key"];

    NSString *listOfConsoles = [[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil] encoding:NSUTF8StringEncoding];

    NSLog(@"%@", listOfConsoles);
}
于 2013-03-21T12:19:27.203 に答える
0

認証が正常に行われませんでした。APPLICATION_IDREST_API_KEY の値を確認してください。

于 2013-03-21T10:45:33.673 に答える