#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» в параметре запроса. Но спасибо, что обновили меня 🙂