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”的单个键,它有一个NSArrayof NSDictionaries

第二个列表是同样的事情..

编辑 1.0:

澄清一下,第二个输出是 JSON,好吗?就这样,只需在此处检查并验证自己。第一个是输出的 JSON,它位于NSObject. 当然会有细微差别...

于 2013-03-21T10:49:10.883 回答
0

您的身份验证未成功完成。请检查APPLICATION_IDREST_API_KEY值。

于 2013-03-21T10:45:33.673 回答
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 回答