Объекты JSON между PHP и Objective-C - PullRequest
3 голосов
/ 29 января 2011

Приложение для iPhone получает объект JSON с веб-сайта PHP.

Объект на сайте PHP имеет несколько свойств, которые являются целыми числами.

Свойства, извлеченные из базы данных, возвращаются из базы данных (где они хранятся как INT) в JSON выглядят так: "seatedplayers":"3"

Свойства, измененные в коде PHP, в JSON выглядят так: "currentseat":1

В моем Obj-c я использую NSNumberFormatter, чтобы правильно отформатировать их следующим образом:
[numFormatter numberFromString:[jsonObject objectForKey:@"seatedplayers"]]; (jsonObject - это NSDictionary)

Этот код отлично работает для свойств с кавычками вокруг значения, но не для остальных. Если я добавлю stringValue в мой код Objective C, он будет работать со свойствами без кавычек, но не со свойствами с кавычками.

Теперь моя большая проблема в том, что этому приложению нужно будет общаться с сайтами, которые я не буду писать лично, так какой код в Objective-C я мог бы написать для обработки любого экземпляра?

EDIT
Вот как я получаю NSDictionary jsonObject.

- (NSDictionary *) getJSONObjectFromWebAddress:(NSString *) address {
// Prepare the URL Request
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];

// Perform the request, expecting JSON back
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSError *error;
SBJsonParser *parser = [[SBJsonParser new] autorelease];
NSDictionary *jsonObject = [parser objectWithString:responseString error:&error];
if (!jsonObject) {
    NSLog(@"%@", error);
}

[responseString release];
return jsonObject;
}

1 Ответ

2 голосов
/ 29 января 2011

У меня была такая же проблема. К счастью, и NSString, и NSNumber отвечают на intValue, так что вы можете безопасно использовать это.


//NSDictionary* myJsonParsed;
[NSString stringWithFormat:@"%d", [[myJsonParsed valueForKey:@"stringOrInt"] intValue]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...