Как разобрать строку JSON в приложениях для iPad? - PullRequest
0 голосов
/ 13 января 2012

Я хочу преобразовать изображение в своей базе данных, чтобы получить его в моих приложениях iAd, и для этого я использую JSON, но я не выполняю его должным образом.

Внутри моей кнопки на Touch я написал этот код

//create string contain url address for php file, the file name is phpFile.php,it receives parameter :name 
NSString *strURL=[NSString stringWithFormat:@"....my.php","hhhhh"];

//to execute php code
NSData *dataURL=[NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; 

//to receive the returned Result 
NSString *strResult = [[[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]self]; 
NSLog(@"%@",strResult);

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Есть разные способы сделать это:

  1. Если целью развертывания является iOS 5.0 и выше, вы можете использовать: NSJSonSerialization
  2. если вы хотите поддерживать версии ниже 5.0, вы можете использовать одну из многих библиотек, лично для меня SBJson довольно неплохо. Взгляните на этот фрагмент, чтобы получить представление:

    NSString *dataString = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
    NSDictionary *dic = [dataString JSONValue];
    NSArray * element = [dic objectForKey:@"jsonKey"];
    NSString * someSimpleElement = [dic objectForKey:@"jsonKey"];
    
1 голос
/ 13 января 2012

Если вы ориентируетесь на iOS 5 или более позднюю версию, вы можете использовать класс NSJSONSerialization .

NSError& anError = nil;
id foo = [NSJSONSerialization JSONObjectWithData: dataURL options: 0 error: &anError];
if (foo == nil)
{
    // handle the error
}
else
{
    //play with the returned object
}

Если вам нужно настроить таргетинг на более раннюю версию iOS, вам потребуется SBJSONили TouchJSON или аналогичный, но принцип тот же.

NB. Пожалуйста, прочитайте также Руководство по загрузке URL , ваш текущий код загружает данные с сервера синхронно.Если это основной поток, пользовательский интерфейс будет зависать до тех пор, пока вы не получите данные или не истечет время ожидания соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...