Ошибка какао 3840 — NSJSONSerialization

Я пытаюсь проанализировать строку JSON, возвращенную веб-службой ASP.NET. Возвращаемая строка была упрощена до следующего:

<anyType d1p1:type="q1:string">[{"Firstname":"Johnny"}]</anyType>

Когда я запускаю следующий код в xcode, я получаю сообщение об ошибке «Error Domain = NSCocoaErrorDomainCode = 3840»… «Текст JSON не начинался с массива или объекта, и параметр, разрешающий фрагменты, не установлен»

NSURL *url = [NSURL URLWithString:@"http://webserver.com/Service.asmx/GetNames"];
    NSData *data = [NSData dataWithContentsOfURL:url];
      if(data != nil)
        {
            NSError *error = nil;
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
                if(error == nil)
        {
            NSLog(@"%@", result);
        }else{
            NSLog(@"%@",error);
        }
    }else{
        NSLog(@"it's nil");
    }

Я не совсем уверен, что здесь делать? Ошибка, похоже, находится в строке «id result =».

* Я думал, что это может быть формат моей строки reutrn, но все, что я читал в сообщениях ASP.NET, говорит, что это правильно.

* Я изменил "NSJSONReadingMutableContainers" на "NSJSONReadingMutableLeves"


person NeedSomeAnswers    schedule 14.02.2012    source источник


Ответы (2)


Действительно ли веб-служба возвращает части <anyType d1p1:type="q1:string"> и </anyType> этой строки в содержимом документа? Если это так, то проблема: действительная строка JSON просто:

[{"Firstname":"Johnny"}],

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

person Mike Fahy    schedule 21.02.2012

Попробуйте это, надеюсь, это сработает

if ([operation isKindOfClass:[AFJSONRequestOperation class]] && [operation respondsToSelector:@selector(setJSONReadingOptions:)]) {
    ((AFJSONRequestOperation *)operation).JSONReadingOptions = NSJSONReadingAllowFragments;
}
[httpClient enqueueHTTPRequestOperation:operation];
person Muhammad Aamir Ali    schedule 06.03.2013
comment
Работал отлично для меня - person Amnysia; 26.09.2013