Как решить проблему, с которой не удалось проанализировать ответ JSON?

#objective-c #json #parsing

#objective-c #json #синтаксический анализ

Вопрос:

Кажется, это очень важная проблема, я много гуглил об этом, но я не получил решения.

Я использую:

 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse response, NSData jsonData, NSError *error)
 

Это то, что я использую для анализа данных JSON:

 NSDictionary *jsonResponse =
[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:amp;error];
 

и это то, что я получаю:

Текст JSON не начинался с массива или объекта, и опция, позволяющая не устанавливать фрагменты.) userInfo=0x16dd0320 {NSDebugDescription= Текст JSON не начинался с массива или объекта, и опция, позволяющая не устанавливать фрагменты.

любая помощь будет оценена по достоинству, заранее спасибо

Комментарии:

1. Зарегистрируйте это: NSString *str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding] проверьте в валидаторе JSON (их много в Интернете), является ли он допустимым JSON или нет.

2. Скорее всего, это происходит потому, что полученные вами данные не являются JSON. НЕ используйте NSJSONReadingAllowFragments, если вы не ожидаете фрагментов (и я никогда не видел, чтобы кто-то ожидал фрагментов); это не решит вашу проблему, если вы ожидали массив или словарь.

3. В валидаторе JSON отображается недопустимый JSON

Ответ №1:

Это очень распространенная проблема в Objective-c. Используйте этот фрагмент в своем запросе-

 [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
 

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

Комментарии:

1. @AnuragSharma Счастливого кодирования 😉

2. Помимо того факта, что это не имеет ничего общего с Objective-C. 😉 Это Cocoa и HTTP.

3. @AminNegm-Awad Я слышал, что есть проблема с «HTTPHeaderField» в параметре запроса. Но спасибо, что обновили меня 🙂