2012-06-05 1 views
1

Я отправляю запрос на внешний API и анализирую ответ с помощью SBJson parser. Тем не менее, я подозреваю, что ответ так длинный, он каким-то образом запутывается.Невозможно разобрать JSON из данных в connectionDidFinishLoading - Может быть, это слишком много данных?

В моем файле mainviewcontroller.h я установил NSMutableData *receivedData;, чтобы использовать его в методах подключения в файле mainviewcontroller.m.

Однако, после того, как соединение завершения загрузки, я выполнить следующее:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 
    NSArray *allData = [dataString JSONValue]; 
} 

Однако, я получаю кучу ошибок, говоря о том, что JSON не отформатирован. Итак, когда я смотрю на JSON, его очень долго - но здесь и там есть проблемы ... например, «updated_at» ниже.

{ 
      "id": 7844333, 
      "position": 3, 
      "content": "Cell height is off by 5 pixels", 
      "created_at": "2012-06-04T20:31:30-05:00", 
      "updated_at": "2ator": { 
       "id": 98258, 
       "name": "Brian" 
      } 

То, что я думаю, было выше, что обновляется, имеет значение «2012-06 ... и т.д.», а следующий пункт ключ-значение будет создатель: {идентификатор, имя}, но это как-то получил перемешаны в обновленный.

Любой, имеющий аналогичную проблему? Я не думаю, что проблема связана с JSONValue, потому что я выхожу из dataString до того, как он разобрался, и вот где я нахожу ошибки JSON.

Что я имею в виду, так это то, что NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; - это просто длинная строка, но в ней плохой JSON, потому что она смешана.

+0

Что вы видите, если вы просто переходите к URL-адресу в браузере? (Просто сделав 100% уверен, что это не проблема с сервером!) – deanWombourne

+0

В противном случае вы можете добавить код, в котором вы имеете дело с полученными данными в своем делегате NSURLConnection? Можете ли вы NSLog каждый бит данных, которые вы получаете, чтобы проверить его по мере поступления? – deanWombourne

+0

В браузере отображаются правильные данные JSON. Это когда я пытаюсь создать полученнуюData, добавив один за другим, он ее сбивает. Добавьте этот код выше. –

ответ

2

Вы используете полученные данные более чем за одно соединение одновременно?

:)

-1

Я думаю, что ваш json ошибается. Для проверки того, что просто положить файл JSON в: http://jsonlint.com/

Если это действительно то:

Импортируйте SBJSON каркасные классы в вашем project.And попробуйте следующий код:

SBJSON *parser=[[SBJSON alloc]init]; 

NSDictionary * dictionary = [parser objectWithString:responseString]; 

это будет введите данные в словарь, а затем:

NSString *firstParseData=[dictionary objectForKey:@"your key"]; 

вы можете получить данные. Надеюсь, это будет работать в вашем случае.

+0

Да, я знаю, что это неправильно. Я запускал его через JSONLint, и он показал ошибку в ключе/значение «updated_at». Но, я говорю, что данные, данные парсеру, плохие. Я не понимаю, почему receivedData создает плохую строку JSON. Он становится коррумпированным. –

 Смежные вопросы

  • Нет связанных вопросов^_^