Получение раздела NSString - PullRequest
1 голос
/ 03 сентября 2011

В моем приложении я создаю сейчас, я использую API сокращений URL goo.gl для коротких URL. У меня это почти работает, я могу отправить longUrl для получения короткого в NSString, но это в этом формате:

{
"kind": "urlshortener # url",
"id": "http://goo.gl/something",
"longUrl": "http://somethinglonggggg/"
}

Мне просто интересно, есть ли способ просто взять идентификатор (короткий URL) из этого.

Вот что у меня есть:

NSString *longURL = urlText.text;
NSData *reqData = [[NSString stringWithFormat:@"{\"longUrl\":\"%@\"}", longURL] dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [NSMutableURLRequest
                                requestWithURL:[NSURL URLWithString:@"https://www.googleapis.com/urlshortener/v1/url"]
                                cachePolicy:NSURLRequestUseProtocolCachePolicy
                                timeoutInterval:20];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:reqData];

NSError *err = [[NSError alloc] init];
NSData *retData = [NSURLConnection sendSynchronousRequest:request
                                        returningResponse:nil
                                                    error:&err];

if([err domain]) return;

NSString *retString = [[NSString alloc] initWithData:retData encoding:NSUTF8StringEncoding];

if([retString rangeOfString:@"\"error\""].length) return;

NSLog(@" longUrl equals %@ ", longURL);
NSLog(@" retString equals %@ ", retString);

urlText.text = retString;

1 Ответ

2 голосов
/ 03 сентября 2011

Вам необходимо превратить это в NSDictionary (этот синтаксис JSON предназначен для словаря или объекта, как бы вы его ни называли.

API Google для Objective C поддерживает синтаксический анализ JSON для преобразования ответа в объекты.

Вы можете найти его здесь .

Если все, что вам нужно, это разбор JSON, я бы порекомендовал либо JSONkit , либо TouchJSON .

Они оба работают очень похожим образом, вы даете им строку, и они возвращают вам объекты.

Информацию об индивидуальном использовании библиотек можно найти в файле readme соответствующего проекта, там вы найдете, насколько они просты в использовании.

Затем вы получите доступ к различным значениям, используя:

NSString *short URL = [object valueForKey:@"id"];

Это лучший способ взаимодействия со службами REST.

Надеюсь, это поможет!

...