Ошибка при разборе json при преобразовании ответа в NSDictionary - PullRequest
0 голосов
/ 22 ноября 2010

AM становится ниже ошибки при преобразовании ответа json в NSdictionary при разборе json ...

ОШИБКА: -JSONValue не удалось. Трассировка ошибки: ( Ошибка Домен = org.brautaset.JSON.ErrorDomain Код = 3 UserInfo = 0x4d38270 «Нераспознанный ведущий символ» )

любое предложение ...

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Скорее всего, у вас та же проблема, что и у меня ... Возвращаемые данные представлены в формате JSONP, а не в чистом формате JSON.Другими словами, вы будете иметь дело с чем-то вроде

functionCall({"Name": "Foo", "Id" : 1234, "Rank": 7});

вместо просто

{"Name": "Foo", "Id" : 1234, "Rank": 7}

Подробнее здесь

Вам понадобитсяубрать функцию и скобки из строки перед ее анализом через JSON Framework.Вы можете сделать это с помощью следующего регулярного выражения (с интервалом, чтобы его было легче увидеть):

\w+ \s? \( ( \{ .* \} ) \}

И сценарий для написания этого:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
    regularExpressionWithPattern:@"\\w+\\s?\\((\\{.*\\})\\)"
                         options:NSRegularExpressionCaseInsensitive
                           error:&error];

[regex replaceMatchesInString:resultString
                      options:0
                        range:NSMakeRange(0, [resultString length])
                 withTemplate:@"$1"];

NSLog(@"resultString = %@", resultString);
NSLog(@"converted = %@", [resultString JSONValue]);

где resultStringявляется ответом на запрос URL-адреса ... Он должен быть сохранен как NSMutableString, чтобы регулярное выражение могло его обновить.

0 голосов
/ 23 ноября 2010

на самом деле я не создаю объект json, используя api, получаю его ..

Теперь я нашел причину этой ошибки. я не даю действительный объект json для преобразования в nsdictionary ... Так что для получения действительного объекта json мы должны создать действительный URL для получения объекта json.

спасибо за ваше предложение ...

...